若有int a21,23,4则,若有int a[][2]={{1,2},{3,4}}; 则*(a+1),*(*a+1)的含义分别为()。

2020-11-26 09:35:09 字数 4815 阅读 4382

1楼:感性的不逗你了

int a[3]=,,,};这样就是数组应

该是a[4][3],4行3列,第一行是1,2,0,第二行是3,2,4,以此类推,所以a[2][2]是6,不懂hi我

若有int a[][]={{1,2},{3,4}}; 则*(a+1),*(*a+1)的含义分别为

2楼:百万基佬在**

首先这是一个2行2列的数组,第一行12,第二行34。*(a+1)其实等价于a[1],意思是第二行行地址,也就是b选项中的那个。*(*a+1)等价于a[0][1],也就是2。

如果实在难以理解,可以记住每层星号就是一个方括号,加几就是方括号里面的值,不加就是0

int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?

3楼:希声和寡

对于二维数组来说,

例如a[x][y],

在空间结构上,x表示行,y表示列。

所以*(a+i)表示的是第i行的行首地址,所谓行首地址,也就是该行的数组成员的首地址。

是可以等同的视为&a[i][0]的。

所以,这里的*(a+1)代表第一行的数组成员的首地址。

第一行数组成员为,所以*(a+1)也就指向&a[1][0],也就是这里的3这个数组成员的地址

4楼:高金山

非常简单!

*(a+1)相当于a[1],它是一个int [2]的数组!

说它是第二行的首地址,不是很准确,因为没有说明它的类型。

你可以说a是数组a[2][2]的首地址,但地址表示不了数组。

5楼:匿名用户

------------------------------楼上朋友们!不要答非所问

------------------------------lz问:int a[2][2]=,},那*(a+1)代表什么?

*(a+1) 代表a[0][1]

转换方式如下

若有int a[r][c] 则 *a(a+r*x+y) 等价于a[x][y]

6楼:無情一匕

指向多维数组的指针

*(a+1) 代表指向1行0列的元素 a[1][0]的地址它相当于是 (*(a+1)+0));

*(*(a+1)) 值就是 a[1][0]=3;

7楼:流星剑

#include

using namespace std;

void main()

,};cout<<*(*(a+1))<运行结果是30012ff18

可见*(a+1)是3的地址。

8楼:●龙城飞将

//实践一下,基于wen tc

//测试*(a+i)

#include

int a[2][2]=,};

void main(void)

getch();

} /*

打印结果为

404408

412416

一看就知道是地址

*/ //测试*(*(a+0)) 、*(*(a+0)+1) 、*(*(a+1)+0) 、*(*(a+1)+1)

#include

int a[2][2]=,};

void main(void)

/*打印结果为

1 23 4

结果正确,说明

指针a存储的是数组和的起始地址指针,可以说是"指针的指针"

*/int a[2][2]=,},那*(a+1)代表什么?

回答:*(a+1)代表第二行元素的首地址,*(*(a+1))等于3

9楼:伪数学家

*(a+1)=

是一维数组,错不了的

如果说代表什么的话,应该是“数组a的首地址加上2*sizeof(int),这个地址所对应的一维数组”

10楼:

楼上的都在乱说,a[2][2]是一个二维数组,而指针a存储的是数组和的起始地址指针,可以说是"指针的指针",所以*(a+1)得到的是第二个数组,也就是的起始地址,*(*(a+1))才等于3,其实楼主可以自己用c++调试,查看内存的分配的,就明白了

11楼:匿名用户

*(a+1)=a[0][1]如果是按行存放的话(我了解的都是按行存储多维数组)

12楼:匿名用户

*(a+1) 即为a[1][0]的地址,如果**(a+1)则为,

a[1][0]的值

13楼:匿名用户

*(a+1)=2, a 是首地址呗

14楼:0o聿香川

*(a+1)=2, a 为首地址

15楼:匿名用户

*(a+1) 代表3 的地址 *(*(a+1))等于3

自己写个程序运行一下就知道了

若有int a[3][2]={{1,2},{3},{4,5}};,则a[2][1]的值是多少

16楼:匿名用户

题目中的初始化矩阵如下:

1 ; 2

3 ;0

4 ;5

也就是说,大括号对应第一个角标,数字依次对应第二个交表,没有明确初始化的都是0.

所以a[2][1]就是5了

若有int a[3][2] = {{1},{3,2},{4,5}};,则a[1][1]的值是多少,急……

17楼:匿名用户

题目已经给出了除a[0][1]以外所有的元素值。

a[1][1]对应的元素值是2

a[1][1]的值是2

18楼:匿名用户

1 0 0

3 2 0

4 5 0

0 0 0

a[1][1]=2

int a[2][]={{1,2},{3,4}}; 求解这语句有什么问题,该怎么改呢

19楼:匿名用户

你的二维数组定义错误了,应该是int a[2][2]或者int a[2]

20楼:匿名用户

改为a[2]试试

c语言问题 若有说明int a[][4]={1,2,3,4,5,6,7,8,9};,则数组a第一维

21楼:格子里兮

若有说明int a[][4]=;则数组a第一维是3。

定义数组并赋值时c语言规定下标是这样的,a[n]中的n个元素应该是a[0]....a[n-1]。。

因此int a[4]的写法就是表示,第一维大小没限制,但是第二维数组大小就是4,也就是int a[4]=,,},明显是3。

分析:二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行。

22楼:杜爷1号

答案是b,3.

int a[4]的写法就是表示,第一维大小没限制,但是第二维数组大小就是4,也就是int a[4]=,,},明显是3.

23楼:小兆

你定义的就是一个二维数组,第二维的个数是4,为了把所有的数据能分成四份有没有遗漏,那第一维就是3了。

24楼:寂寞的烟头哥

首先看数组后面为4表示有四列二维数组是

1234

5678

9000

这里就可以很明显的看出是三行,所以就是a[3][4],第一个叫做第一维,第二个叫做第二维

若有定义:int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是

25楼:匿名用户

首先a[1]是第1行(从0计数)的首地址。类型为int *型。指向a[1][0]

于是 a[1]+1就是指向a[1][1]

*(a[1]+1)就是a[1][1]的值,a=2 4

6 810 12

于是a[1][1]就是8了。

这里有一个通用的公式

对于任意的 *(p+i) 等效于p[i]

26楼:己秀荣帖妍

应该是8,a[1]是第二行首地址,加1后跳到地址a[1][1],那么再取值就是a[1][1]的值。请验证,若有错那就是行地址的跳转,结果就是a[2][1]=10.

若已定义,int a[3][2]={1,2,3,4,5,6};,值为6的数组元素是

27楼:匿名用户

a[2][1] = 6

首先,c/c++语言中,下标是从0开始;

则 存储情况如下:

[0] [1]

[0] 1 2

[1] 3 4

[2] 5 6

所以答案为:a[2][1]

28楼:匿名用户

a[2][1]

数组下标都是从0开始的

定义了一个三行两列的数组,所以第一维是行号,有0~2,第二维是列号有0~1

很显然,值为6的就是a[2][1]

29楼:无忧网事

int a[3][2]说明二维数组为三行,二列,共6个元素。

c语言下标是从0开始计数的。

值为6的是最后一个元素,即a[2][1]。