int a[3][2];int *p = a[0]; 是什么意思?

3.以下程序的打印结果是多少?
#include <stdio.h>

int main (int argc, char *argv[])
{
int a[3][2] = {(1,2),(3,4),(5,6)};
int *p = a[0];
printf("%d\n",p[0]);

return 0;
}

int a[3][2] = {(1,2),(3,4),(5,6)}; 声明 a 是2维数组,有3排2列,
初始化 a[0][0]=(1,2); 得逗号表达式结果 a[0][0]=2;逗号表达式的结果等于最右那个(表达式)数值。
a[0][1]=(3,4); 得逗号表达式结果 a[0][1]=4;
a[1][0]=(5,6); 得逗号表达式结果 a[1][0]=6;
int *p = a[0]; 声明 p 是指针,初始化,让它指向 &a[0][0] 的地址。
printf("%d\n",p[0]); 输出 *(p+0) 即 指针 p 当前 指向 的值
输出 a[0][0], 就是 2。
===
如果是 int a[3][2] = {{1,2},{3,4},{5,6}}; 那么就初始化了6个元素,a[0][0] 是 1。
d
温馨提示:答案为网友推荐,仅供参考
相似回答