二维数组的表示方法

若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;

我感觉这道题BC两个选项都是正确的 请高手指教应该选哪个 其余的错在哪里 谢谢

第1个回答  推荐于2018-12-31
表示方法如下:  
int a[3][2]={{1,1,},{1,1,},{1,1,},}
  定义的时候int a[3][2]代表三行两列的整型数组
  使用的时候是循环不到a[3][2]的,三行两列的整型数组最多可以访问到a[2][1],因为数组下标是从0开始的,切记不要越界哦~
  
  

  二维数组的初始化 
  二维数组初始化也是在类型说明时给各下标变量赋以初值。 二维数组可按行分段赋值,也可按行连续赋值。 例如对数组a[5][3]:
  1.按行分段赋值可写为static int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };
2.按行连续赋值可写为static int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85 };

  这两种赋初值的结果是完全相同的。
  
  3.可以只对部分元素赋初值,未赋初值的元素自动取0值。
例如: static int a[3][3]={{1},{2},{3}}; 是对每一行的第一列元素赋值,未赋值的元素取0值。 赋值后各元素的值为: 1 0 02 0 03 0 0
static int a [3][3]={{0,1},{0,0,2},{3}}; 赋值后的元素值为 0 1 00 0 23 0 0

4.如对全部元素赋初值,则第一维的长度可以不给出。
例如: static int a[3][3]={1,2,3,4,5,6,7,8,9}; 可以写为:static int a[][3]={1,2,3,4,5,6,7,8,9};本回答被网友采纳
第2个回答  2010-08-01
C是正确的

p是指针数组

即p[0]是一个指针

而a是二维数组的首地址

p[0] = a[0]也是正确的本回答被提问者采纳