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]。