int a[3][2] = {(0, 1), (2, 3), (4, 5)};
int *p = a[0];
printf("%d\n", p[0]);
代码中的{}里面是(),圆括号不能给二位数组初始化的。
正确的给二维数组的赋值方式为:
int b[3][2] = {{0, 1}, {2, 3}, {4, 5}};
但逗号表达式,每个元素都要求值,但是整体的值是最后一个元素的,所以(1,2,3,4,5,6,7,8,9,10)的值是10。
so,相当于只给a[0][0],a[1][0],a[2][0]赋上了1,3,5的值。采用以下代码输出的结果是:1,3,5
for(i=0;i<3;i++){
printf("%d,", p[i]);
}
所以给二维数组赋值要小心了。