【发布时间】:2013-01-05 10:43:49
【问题描述】:
我尝试了以下方法:
#include <stdio.h>
int main(void) {
char multi[3][10];
multi[0] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
multi[1] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
multi[2] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
printf("&multi[2][2]: %d \n", (int) &multi[2][2]);
printf("(*multi + 2) + 2: %d \n" , (int) (*multi + 2) + 2);
}
并产生了这个输出:
dominik@luna:~$ gcc tmp.c
tmp.c: In function ‘main’:
tmp.c:5: error: expected expression before ‘{’ token
tmp.c:6: error: expected expression before ‘{’ token
tmp.c:7: error: expected expression before ‘{’ token
我已经做了一些研究,发现this thread Vladimir 声明“您应该在声明它们的同一行中初始化您的数组”。这仍然让我感到困惑,是不是你不应该像你不应该写意大利面条代码那样这样做,还是意味着你不能这样做。
或者是我做错了什么?
【问题讨论】:
-
这意味着您必须在与声明相同的语句中对其进行初始化。合并四个语句。
-
注意;使用
%pprintf 指针,不要大小写为(int)。
标签: c arrays gcc multidimensional-array