二维数组中的冲突类型(C)

And*_*rew 0 c multidimensional-array

我正在制作我的第一个C程序,它使用了一个2D数组,代码对我来说似乎很奇怪.首先,为什么我必须在[1] [6]中存储"白色"?我试过[0] [6],但是编译器抱怨并且不会运行但是当我在printf中调用它时,它是[0] [6].此外,当试图在代码[2] [6]中存储"Bl"时,它表示代码的冲突类型.任何帮助将不胜感激,谢谢.

int main (int argc, const char * argv[]) {

 for (q=0; q<=457; q++) {
  for (w=0; w<=6; w++) {
   codes[q][w] = 0;
  }
 }

 char codes[1][6] = {'W','h','i','t','e','\0'};
 char codes[2][6] = {'B','l,'\0'};

 printf("%c\n", codes[0][0]);
Run Code Online (Sandbox Code Playgroud)

jwi*_*mar 5

您正在混淆需要执行的两个任务.一个任务是声明一个变量,并告诉编译器它将保持什么类型.第二项任务是将数据放入其中.

你正在同时完成这两项任务,这让你感到困惑.在您的第一个语句中,您告诉编译器,"代码是一个2维,1x6数组.顺便说一句,这里是要放入它的值:"White"." 你的第二个问题是,"代码是一个二维的2x6数组.顺便说一下,将"BI"放入其中."

编译器抱怨并说,"它不能是一个2x6阵列,因为你已经告诉我它是一个1x6阵列."

你需要的是这样的:

char code [2] [6] = {{'W','h','i','t','e','\ 0'},{'B','l,'\ 0'} };

然后你可以通过查看代码[0] [0]等获得'W'.