首页 > 试题广场 >

选项代码中能正确操作数组元素的是()

[不定项选择题]
选项代码中能正确操作数组元素的是()
int main(){
  int a[N][N]={{0,0},{0,0}};
  for(int i=0;i<N;i++){
     for(int j=0;j<N;j++){
       //访问二维数组a的值
       //选项代码
      }
    }
}
  • *(*(a+i)+j)=1
  • *(a[i]+j)=1
  • **(a+i)[j]=1
  • *((a+i)+j)=1
数组名当被直接使用时,是一个指向数组首地址的指针。如果数组是***数组,那么数组名是指向第一行数组的首地址,而不是第一行第一列单个元素的地址,所以*(a+i)与a[i]是一个意思,当直接用a[i]时代表的是该一维数组的首地址,所以*(a[i]+j)是与a[i][j]等效,所以AB选项正确 
发表于 2015-11-18 15:14:26 回复(8)
a[i]=*(a+i); a[i][j]=*(a[i]+j)=*(*(a+i)+j);
发表于 2017-03-07 09:25:41 回复(0)
a[i] 和*(a+i)表示的是一个意思,所以对于二维数组也一定要注意区分 

发表于 2016-04-26 13:07:56 回复(4)
C如果去掉一个*也是对的
发表于 2016-08-18 22:40:22 回复(3)
在C++中,二维数组的指针也是二维的。
数组名字代表最外层地址指针,它是以行为单位的,如题中,a指向二维数组第一行整体,加1后指向第二行整体。
*a 就相当于求一维上的指针,也就是对单个行而言,a[i]和它是同样的效果。当*(a+i)表示一维上的指针时,那么指向所对应行i的首地址,给他加j就是求第i行第j列的地址。
发表于 2017-02-28 09:09:11 回复(0)
我一个学java的做数据结构和算法老遇到c的题。。。这下好了,现在c比java还6。。。(手动滑稽)
发表于 2018-09-30 21:02:02 回复(1)
//C 选项错在多了个*,注意还要加括号,下标运算优先级高 int main() { int a[3][2] = { { 0,1 },{ 2,3 },{4,5} }; for (int i = 0; i<3; i++) { for (int j = 0; j<2; j++) { //访问二维数组a的值 cout << *(*(a + i) + j) << "," //A << *(a[i] + j) << "," //B << (*(a + i))[j] << endl;//C } } system("pause"); }

编辑于 2017-05-25 10:46:56 回复(0)
*(a+i) 相当于a[i]
*(a[i)+j) 相当于a[i][j]  同*(*(a+i)+j)
发表于 2017-08-24 20:11:10 回复(0)
求人解释了一下,D为什么错?
发表于 2022-03-05 17:22:08 回复(1)
发表于 2023-11-06 20:08:55 回复(0)
二维数组可看作是其每个元素都是一维数组的一维数组,所以 a[i] 就是其第 i 个元素,也即第 i 个一维数组的元素名同首元素的地址。 
发表于 2022-12-30 10:24:31 回复(0)
我看的不是java吗[手动问号脸]
发表于 2022-09-28 16:37:23 回复(0)
这种题很简单 * 和 []是降维的 &是升维的
发表于 2022-09-27 19:42:56 回复(0)
D选项中a+i表示&a[i],即a[i]的首地址,要想取到a[i]得用*(a+i)或者a[i]
发表于 2022-07-30 10:09:36 回复(0)
D是a[i+j]即&a[i+j][0] 是线性表而不是一个简单的项
发表于 2022-03-08 11:19:36 回复(0)
ai=*(a+i)
发表于 2021-07-21 22:40:55 回复(0)
a[i]表示的是第i行的首地址,既a[i] == &a[i][0];所以a[i]+j == &a[i][j],对其解引用便实现了对a[i][j]的赋值;又a[i] == *(a+i),所以a也正确。
发表于 2020-08-03 10:02:05 回复(0)
二维数组a[i][j]中,a[i]中存储的是第i行数组的地址,j是该行的下标,那么a[i]+j就是目标位置的元素,*(a[i]+j) 用*来取得元素。a[i]可以替换为*(a+i)
发表于 2020-05-07 13:51:58 回复(0)
数组名当被直接使用时,是一个指向数组首地址的指针。如果数组是***数组,那么数组名是指向第一行数组的首地址,而不是第一行第一列单个元素的地址,所以*(a+i)与a[i]是一个意思,当直接用a[i]时代表的是该一维数组的首地址,所以*(a[i]+j)是与a[i][j]等效
发表于 2019-06-22 01:53:06 回复(0)
本体考察数组的指针引用,a在一维数组中表示首地址指针,a在二维数组中表示第一行第一列元素的地址。
*(a+i) =  a[i] ,表示二维数组第i行
*(*(a+i)+j)表示第i行第j列的元素
替换掉就是
*(a[i]+j)

发表于 2019-05-30 10:36:04 回复(0)