user-0 提问: char二维数组初始化问题。

回复:
user: user-1
content: 引用 14 楼 zhao4zhong1 的回复:上帖后面少逗号，纠正如下： char *list[5][6]={     "TW"  ,"NULL","NULL","TW"  ,"NULL","NULL",     "NULL","+TW" ,"NULL","NULL","NULL","NULL",     "FR"  ,"NULL","NULL","FR"  ,"NULL","NULL",     "NULL","NULL","*FR" ,"NULL","NULL","NULL",     "ID"  ,"NULL","NULL","(E)" ,"NULL","NULL", }; //或 char list[5][6][5]={     "TW"  ,"NULL","NULL","TW"  ,"NULL","NULL",     "NULL","+TW" ,"NULL","NULL","NULL","NULL",     "FR"  ,"NULL","NULL","FR"  ,"NULL","NULL",     "NULL","NULL","*FR" ,"NULL","NULL","NULL",     "ID"  ,"NULL","NULL","(E)" ,"NULL","NULL", };  正解！

user: user-2
content: 你这个是一个char类型的字符二维数组，一共有30个元素，每个元素为char类型，而不是char指针类型，然而你的初始化当中都是用"TEST"这样的表达式，这是一个字符串的指针char*类型，和char类型是不同的，如果你想存储这30个字符串的话，可以声明成：char* ch[30]，声明30个指向char类型的指针，每个指针用来存储字符串的首地址。

user: user-3
content: 应该是char*array[5][6]吧？

user: user-4
content: 引用 4 楼 user-16 的回复:error C2078: 初始值设定项太多 char[5][6]是5*6个字符不是5*6个字符串+1

user: user-5
content: "NULL"是一个字符串，所以二维数组的元素要嘛char *,要嘛 char[5]  参看14L

user: user-6
content: 首先，肯定是超了。 其次，赵老师的答案是对的。

user: user-7
content: 数组名不能为list，你改一个别的试一试

user: user-8
content: char list[5][6] 表示的是30个char类型，你初始化的“tw”之类的是字符串啊。肯定出错啊。 正确的方法是，如果你要写30个，就写30个字符。或者5个长度小于6的字符串。 比如： char list[5][6]={'1','2','3','4',。。。。。,'30'}; or char list[5][6] = {"123456","345","456","34","ddg"};

user: user-9
content: 明显数组越界了么！

user: user-1
content: 上帖后面少逗号，纠正如下： char *list[5][6]={     "TW"  ,"NULL","NULL","TW"  ,"NULL","NULL",     "NULL","+TW" ,"NULL","NULL","NULL","NULL",     "FR"  ,"NULL","NULL","FR"  ,"NULL","NULL",     "NULL","NULL","*FR" ,"NULL","NULL","NULL",     "ID"  ,"NULL","NULL","(E)" ,"NULL","NULL", }; //或 char list[5][6][5]={     "TW"  ,"NULL","NULL","TW"  ,"NULL","NULL",     "NULL","+TW" ,"NULL","NULL","NULL","NULL",     "FR"  ,"NULL","NULL","FR"  ,"NULL","NULL",     "NULL","NULL","*FR" ,"NULL","NULL","NULL",     "ID"  ,"NULL","NULL","(E)" ,"NULL","NULL", };

user: user-1
content: char *list[5][6]={     "TW"  ,"NULL","NULL","TW"  ,"NULL","NULL"     "NULL","+TW" ,"NULL","NULL","NULL","NULL"     "FR"  ,"NULL","NULL","FR"  ,"NULL","NULL"     "NULL","NULL","*FR" ,"NULL","NULL","NULL"     "ID"  ,"NULL","NULL","(E)" ,"NULL","NULL" }; //或 char list[5][6][5]={     "TW"  ,"NULL","NULL","TW"  ,"NULL","NULL"     "NULL","+TW" ,"NULL","NULL","NULL","NULL"     "FR"  ,"NULL","NULL","FR"  ,"NULL","NULL"     "NULL","NULL","*FR" ,"NULL","NULL","NULL"     "ID"  ,"NULL","NULL","(E)" ,"NULL","NULL" };

user: user-10
content: 数组越界了；      可以定义成 char* List[5][6] = {...};形式，   这样就可以保证定义的是一个字符串指针的二维数组。

user: user-11
content: 你那根本就不是5*6＝30个字符呀……。当然会错

user: user-12
content: （1） char list[][6] ={"TW","NULL","NULL", "TW","NULL","NULL",            	 "NULL","+TW","NULL","NULL","NULL","NULL",	                  "FR","NULL","NULL","FR","NULL","NULL",	                  "NULL","NULL","*FR","NULL","NULL","NULL",                  "ID","NULL","NULL","(E)","NULL","NULL"  }; 等价于 char list[30][6] = {"TW","NULL","NULL", "TW","NULL","NULL",            	 "NULL","+TW","NULL","NULL","NULL","NULL",	                  "FR","NULL","NULL","FR","NULL","NULL",	                  "NULL","NULL","*FR","NULL","NULL","NULL",                  "ID","NULL","NULL","(E)","NULL","NULL"  }; (2) const char* list[5][6] = { {"TW","NULL","NULL", "TW","NULL","NULL"} {"NULL","+TW","NULL","NULL","NULL","NULL"}	 {"FR","NULL","NULL","FR","NULL","NULL"}	 {"NULL","NULL","*FR","NULL","NULL","NULL"} {"ID","NULL","NULL","(E)","NULL","NULL"} };

user: user-13

user: user-14
content: 原来是char啊！ 楼主改成''吧

user: user-15
content: 你完全理解错了,char [5][6]是分配5个长度最多为6的字符串，而不是5*6个字符串.... C++的话用string就好了(不是C)。 string list[5][6]={"TW","NULL","NULL", "TW","NULL","NULL",            	 "NULL","+TW","NULL","NULL","NULL","NULL",	  "FR","NULL","NULL","FR","NULL","NULL",	                  "NULL","NULL","*FR","NULL","NULL","NULL",                  "ID","NULL","NULL","(E)","NULL","NULL"  };C的话，直接分配char list[30][]或者list[5][6][]，或者自己定义struct什么的，自己组建一个字符串类型

user: user-16
content: error C2078: 初始值设定项太多 char[5][6]是5*6个字符不是5*6个字符串

user: user-14
content: { {"TW","NULL","NULL", "TW","NULL","NULL"} {"NULL","+TW","NULL","NULL","NULL","NULL"}	 {"FR","NULL","NULL","FR","NULL","NULL"}	 {"NULL","NULL","*FR","NULL","NULL","NULL"} {"ID","NULL","NULL","(E)","NULL","NULL"} }; 试试

user: user-0
content: 引用 1 楼 derekrose 的回复:compile error？[Error] C:\Users\Administrator\Desktop\实验二\SemanticalAnalysis.cpp:36: error: too many initializers for `char[5][6]'