首页 > 试题广场 >

下面哪个指针表达式可以用来引用数组元素a[i][j][k][

[单选题]
下面哪个指针表达式可以用来引用数组元素a[i][j][k][l]()
  • (((a+i)+j)+k)+l)
  • *(*(*(*(a+i)+j)+k)+l)
  • (((a+i)+j)+k+l)
  • ((a+i)+j+k+l)
a:整个四维数组的地址
*(a+i) = a[i] 
*(a+i)+j = a[i] +j
*((a+i)+j) = a[i][j]
*((a+i)+j)+k =  a[i][j]+k
*( *((a+i)+j)+k ) = a[i][j][k]
*( *((a+i)+j)+k )+l =  a[i][j][k]+l
*( *( *((a+i)+j)+k )+l ) = a[i][j][k][l], 选项B少了*和()
不管多少维,按照这个思路,不会差
发表于 2016-08-28 15:40:12 回复(3)
知识点:
1、操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值
2、除了一维数组,其他高维数组都有a=*a,表示数组的首地址。而在一维数组int a[N]中,a代表数组首地址,*a代表数组第一个元素的值。

维度太高不好理解,以数组int a[i+1][j+1]二维数组为例。如何取得最后一个元素a[i][j]的值?
a=*a,即该数组的首地址,亦即第0行的首地址(如果要取第0行的第0个元素,即a[0][0],可用**a),*(a+i)表示第i行首地址,*(a+i)+j第i行第j列的地址。而*表示引用地址的存储内容。故*(*(a+i)+j)表示i行j列的元素取值。
所以更高维同理。
发表于 2015-09-17 16:33:40 回复(2)
a:整个四维数组的地址
*(a+i) = a[i] 
*(a+i)+j = a[i] +j
*((a+i)+j) = a[i][j]
*((a+i)+j)+k =  a[i][j]+k
*( *((a+i)+j)+k ) = a[i][j][k]
*( *((a+i)+j)+k )+l =  a[i][j][k]+l
*( *( *((a+i)+j)+k )+l ) = a[i][j][k][l], 选项B少了*和()
不管多少维,按照这个思路,不会差
发表于 2021-08-29 19:33:16 回复(2)
a[i]等价 *( a+i)
发表于 2019-06-11 07:55:54 回复(0)
如果我没瞎的话,这是四重指针,而
*(*(*(a+i)+j)+k)+l)
只用了三个" * " , 少一个左括号
发表于 2017-06-12 15:46:45 回复(0)
选项错了,多了个括号
发表于 2015-09-17 17:57:04 回复(6)
高维数组  嵌套的值是数组要明确a的意思和a+1的意思 a是所有的首地址,a+1就是增加每个元素的大小,比例int a[2][3]  a中的元素是一个三个int的数组 a+1每次都是增加int[3]的大小,所以你a[2][2] 的表示 方法 先取到数组中外层第二个 (a+2),然后取其值*(a+2) 这个值是一个int a[3] *(a+2)代表这个 int a[3]的首地址 *(a+2)+2代表第二个的地址  而值为*(*(a+2)+2)
发表于 2017-04-19 09:39:52 回复(0)
B

发表于 2015-09-17 16:19:26 回复(0)
B
发表于 2015-09-18 22:56:44 回复(0)
学会二维数组的表示法,这个是一模一样的
发表于 2021-12-05 14:22:22 回复(0)
不是越界了嘛
发表于 2020-04-24 21:59:49 回复(0)

*(a+i) = a[i] 
*(a+i)+j = a[i] +j
*((a+i)+j) = a[i][j]
*((a+i)+j)+k =  a[i][j]+k
*( *((a+i)+j)+k ) = a[i][j][k]
*( *((a+i)+j)+k )+l =  a[i][j][k]+l
*( *( *((a+i)+j)+k )+l ) = a[i][j][k][l]
可以用来引用数组元素a[i][j][k][l]的 指针表达式:   *( *((a+i)+j)+k )+l
发表于 2017-04-24 16:23:12 回复(0)
以二维数组a[M][N]为例,*(a+i)表示第i行首地址,*(a+i)+j表示第i行第j列的地址,*( *(a+i)+j)表示 第i行第j列元素的值
同理 a[M][N][K]中, a[i][j][k] = *(*(*(a+i)+j)+k)
发表于 2016-08-29 19:26:25 回复(0)
由二维数组向高维数组推广:四维数组应该用四个*才能得到某一个具体的元素,题目中说的是引用,所以是三个*。
发表于 2015-10-24 10:47:42 回复(0)
d似乎也可以啊
发表于 2015-09-19 00:35:44 回复(0)