/* 2009年7月28日*/
#include<stdio.h>
int main()
{
int a[3][2] = {(1,0),(2,3),(4,5)};
int *p;
p = a[0];
printf("%d/n", p[0]);
return 0;
}
先想一下结果是多少?可能很多人不假思索就回答是1,但很令他们失望,结果不是1,而是0,认真看一下,二维数组初始化的时候,里面用的是小括号而不是大括号!!!(1,0) ;(2,3);(4,5)均是逗号表达式。
逗号表达式是所有运算符中优先级最低的,其执行顺序是从左到右,取值为最右边一个表达式的值,这样(1,0)=0;(2,3)=3;(4,5)=5;所以实际上数组的初值为:a[3][2]={0,3,5};而p[0]相当于a[0][0],所以输出应该为0.