分类：电脑/网络-程序设计-C/C++
问题：c语言下列程序的输出结果是6为什么1.29下列程序执行后的输出结 
1.29下列执行后的输出结果是6为什么main(){ int a[3][3], *p,i; p=&a[0][0];for(i=p;i<9;i++) p[i]=i+1;printf("%d \n",a[1][2]);}1.30设有数组定义：char array [ ]="china";则数组 array所占的空间为6个字节为什么1.31下列程序的输出结果是6为什么int b=2;int func(int *a){ b +=a; return(b);}main() { int a=2, res=2;1.29下列执行后的输出结果是6为什么main(){ int a[3][3], *p,i; p=&a[0][0];for(i=p;i<9;i++) p[i]=i+1;printf("%d \n",a[1][2]);}1.30设有数组定义：char array [ ]="china";则数组 array所占的空间为6个字节为什么1.31下列程序的输出结果是6为什么int b=2;int func(int *a){ b +=a; return(b);}main() { int a=2, res=2; res += func(&a);printf("%d \n",res);}
回答：1.29下列执行后的输出结果是6为什么，题目应该为下面：main(){ int a[3][3], *p,i; p=&a[0][0];for(i=0;i<9;i++) p[i]=i+1;printf("%d \n",a[1][2]);}p = &a[0][0]是让p指向数组a的第一个元素，即a[0][0]，是第一个元素的地址，那么p[i]代表相应元素，因为二位数组也是线性型，并且C语言中按行优先，故a[1][2]相当于是p[6]。所以答案就是6。1.30设有数组定义：char array [ ]="china";则数组 array所占的空间为6个字节为什么会在chana后面加\0，这是系统默认的。1.31下列程序的输出结果是6为什么int b=2;int func(int *a){ b +=a; return(b);}main() { int a=2, res=2; res += func(&a);printf("%d \n",res);}题出错了，题目应该如下：int b=2;int func(int *a){ b +=*a; return(b);}main() { int a=2, res=2; res += func(&a);printf("%d \n",res);}因为&a把a的地址传入函数func()；而通过*a就是a的值2，所以最后结果相当于 res = res+(b+a)=6