How does a char array work?

Can you explain this line code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char map [20][20] ={
     "###################",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#        W        #",
     "###################"
};


I only usually see one set of brackets why does it have two?
i'm referring to the [20][20])

Here's the whole source code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 #include <iostream>
#include <windows.h>

using namespace std;

char map [20][20] ={
     "###################",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#                 #",
     "#        W        #",
     "###################"
};                                            

bool endgame = false;
int gamespeed = 100;

int main ()
{   
    system ("color 0a");
    
    while (endgame == false)
    {
          system ("cls");
          
          for (int y = 0; y < 20; y++)
          {
              
              cout << map[y] << endl;
              
          }
    }
}
I only usually see one set of brackets why does it have two?
It should, but because the construct is so common, they cheated and allowed that syntax.

C doesn't really have a string type built into it, but strings are supported thru a bunch of library functions that manage them, and the compiler "kinda" being flexible with stuff where char arrays are concerned.

For example, those declared strings have '\0' appended to them silently. So the length of this is 5, not 4:
 
char name[] = "Tank";
Last edited on
Topic archived. No new replies allowed.