若有定义:int a[2][3]; 以下选项中对数组元素正确引用的是
时间: 2023-09-27 17:10:55 浏览: 211
以下选项中对数组元素正确引用的是:
- a[0][0]
- a[1][2]
- a[1][0]
- a[2][3]
选项中只有前两个是正确的,因为数组a的定义是int a[2][3],表示a有两行三列的整数数组。因此,a[0][0]表示第一行第一列的元素,a[1][2]表示第二行第三列的元素。而a[1][0]也是正确的,表示第二行第一列的元素。但是a[2][3]是错误的,因为数组a的下标最大只能到a[1][2],a[2][3]会访问数组a之外的内存,导致程序出现未定义行为。
相关问题
设有以下定义: int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*prt)[3]=a,*p=a[0] 则下列能够正确表示数组元素a[1][2]的表达式是
下列能够正确表示数组元素a[1][2]的表达式是:
1. *(prt+1)+2
2. *(*(prt+1)+2)
3. *(p+1*3+2)
4. *(p+4)+2
其中,选项1和2是指针运算,选项3和4是基于数组下标进行计算。选项1和2中,prt指向数组a的第0行,因此,*(prt+1)表示a的第1行,再加2表示第1行的第2个元素,即a[1][2]。选项3中,p指向数组a的第0行第0列,因此,p+1*3+2表示a[1][2]。选项4中,p+4表示a[1][0],再加2表示a[1][2]。
若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a : 则不能表示a数组元素的表达式是 。 A. *p B. a[10] C. *a D. a[p-a]
不能表示 a 数组元素的表达式是 B. a[10]。因为数组下标从 0 开始,所以 a 数组的最后一个元素的下标是 9,而不是 10。因此,a[10] 不是一个合法的数组元素表达式。而其他选项都是合法的表达式。*p 表示 a 数组的第一个元素,即 a[0];*a 也表示 a 数组的第一个元素,即 a[0];a[p-a] 是一个复杂的表达式,但是它是合法的,表示 p 指向的地址距离 a 数组的首地址相差几个 int 类型的单位,即 p 和 a 的地址差除以 sizeof(int)。