首页 > 试题广场 >

若有定义 int a[3][5], i, j; (且0≤i

[单选题]
若有定义 int a[3][5], i, j; (且 0≤i<3, 0≤j<5),则 a[i][j] 不正确的地址表示是() 。
  • &a[i][j]
  • a[i]+j
  • *(a+i)+j
  • *(*(a+i)+j)
求的是哪个地址表示是错的,只有选项D明显解引出来的数组元素,不是个地址,结果答案选D 。A, B, C, 都是合法的地址表示方法。
编辑于 2020-06-20 22:41:26 回复(7)
D错,d表示的不是地址,而是地址所指向的元素
发表于 2019-12-03 08:55:15 回复(2)
#include<stdio.h>
int main()
{
    int a[3][5] = {};
    int i = 2, j = 3;
    std::cout << &a[i][j] << std::endl
        << a[i] + j << std::endl
        << *(a + i) + j << std::endl
        << *(*(a + i) + j) << std::endl;
    return 0;
}
vs2019下结果


答案选D
发表于 2020-06-01 20:08:41 回复(1)
B。根据题目定义为一个3行5列的数组。B选项属于对第i行指针的整体移动j行,最后指向的是i+j元素地址。
  • 选项A,是表示地址的标准方式,用&符号。
  • 选项C,指针的移动定位,二维数组名可以理解为指向该数组第一行的指针,a+i定位到数组i行首元素地址,*(a+i)表示第i行第一个元素,加上j表示a[i][j]
  • 选项D,指针的移动定位,是指向C选项元素的指针。
编辑于 2020-06-20 22:39:02 回复(8)
看题啊,地址、地址、地址,要你找表示地址的选项,最后一个是表示地址里面的值了呀,you know?
a是整个二维数组首地址,*(a+1)表示,二维数组的第二个元素,也就是a【1】,a【1】是第二组的首地址
*(a+1)+1,地址+1,那不就是偏移后面一个位置咯,那就是a【1】【1】的地址,在*星花一下,那就是这个地址的值
在数组里面【】和 * 等价
q:895950861
发表于 2022-06-23 13:42:33 回复(0)
取地址,明显d错,c为取地址,则d就是取c地址中的值
发表于 2019-11-27 13:17:40 回复(0)
B错
a[i]+j表示a[i][j]
a[i]可看作是1个一维数组
eg
int a[1000];
sort(a,a+100);
for(int i=0;i<100;i++)
printf("%d ",a[i]);
编辑于 2019-11-01 14:23:23 回复(1)
  • &a[i][j]表示数组a的第i行、第j列元素的地址。
  • a[i]+j表示数组a的第i行的首地址,然后加上j,相当于取第i行、第j列元素的地址。
  • *(a+i)+j表示先取数组a的第i行的地址,然后再加上j,相当于取第i行、第j列元素的地址。
  • *(*(a+i)+j)表示先取数组a的第i行的地址,然后取这个地址对应的值,再加上j,相当于取第i行、第j列元素的值。
发表于 2023-07-22 13:17:00 回复(0)
注意这个题是二维数组,一不小心会陷入一维数组分析的惯性
发表于 2023-05-22 11:28:48 回复(0)
D,显然
发表于 2019-11-01 16:40:42 回复(0)
B不正确
B是数组中元素的值的运算,不是地址
A用了取地址符‘&’,直接得到元素地址
C、D都是通过指针符‘*’来指向元素的地址
/*
用‘&’和‘*’的取地址表示方式不同,‘&’后面用中括号表示元素,‘*’后面用数组变量加序列位置
‘&’:在符号后面直接加元素可得地址,例:scanf("%d",&a[i]); (元素读入的常用语句)
‘*’:在符号后用数组变量加上i、j等序列位置来定位,例:int *d; d=*(a+i); (把地址赋值给指针变量)
另外,‘*’也可以取指针的地址,如D项,取了C中指针的地址
发表于 2019-11-01 08:25:40 回复(1)
D错,d表示的不是地址,而是地址所指向的元素
编辑于 2024-01-08 15:56:17 回复(0)
d写法对的,只是出来的是值,不是地址
发表于 2023-07-03 11:25:19 回复(0)
D是取地址中的值
发表于 2023-06-18 11:54:32 回复(0)
选D, 表示的是数组元素的值
发表于 2022-03-30 00:55:31 回复(0)
D错,D表示的是a[i][j]的值
发表于 2022-01-21 20:10:07 回复(0)
发表于 2021-12-10 08:57:33 回复(0)
这分明就是一个文字题,居然考文字游戏
发表于 2021-05-10 21:12:39 回复(0)
&a[i][j] 中的& 相当于给最后的[j] 去掉了取值用的方括号。。。
看蒙了,谁写程序会这么写:)
发表于 2020-09-11 13:04:42 回复(0)
第4个是错的
发表于 2020-04-20 21:26:10 回复(0)