77问答网
所有问题
当前搜索:
二维数组的指针用法
C 语言指针
的指针
和
二维数组的
区别?
答:
指针
的指针
和
二维数组
完全俩东西,二维数组是 一维
数组的
一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针 补充说明下隐式转化为指针,简单说就是这样(T是任意类型)设有一个数组T a[10];a的类型是“...
二维数组
与指针
的指针
有何区别
答:
最大的区别是数组不能被直接赋值,比如
二维数组
a[3][3],b[3],你不能这样赋值:a[0]=b;但
指针
可以。其次,就像一楼说的,数组一开始就被分配特定空间,指针值赋予一个地址。最后,数组分配的是一段连续的空间,int a[3][3]则a[0][0],a[0][1],a[0][2],a[1][0]...a[2][2...
int a[3][4]; int **p; p=a; 合法吗
答:
嗯,不合法,第一:二级
指针
不能直接指向a,因为类型不同.第二:指针指向
二维数组的
方法不对。如果要改可以这样改:int a[3][4]; int *t, **p;t=a[0],p=&t;,用一下(3)的方法会更简单,也是用的比较多的 给你说说常见指针和数组的
用法
吧,都很基础,不过还是有难度的,,不需要一下...
数组指针
p,
二维数组
a[3][4]有如下赋值方法:*p = a[0]对吗
答:
有了前面的定义,*p==a[0]不错,但不能*p=a[0];这样赋值。因为有了p=a;后,*p(或p[0])、*(p+1)(或p[1])、*(p+2)(或p[2])它们都是常量
指针
,不能重新赋值。至于你说*和&是互逆运算也不是绝对的——对于一级指针和变量,*和&确实可以互逆;对于二级以上,*是取值,**是把第...
为什么C语言
二维数组
a[2][2], a和*a输出是相同的,都表示一个地址
答:
二维数组
可以理解为几个指向一维
数组的指针
组成
指针数组
。所以从类型上讲,a是指向指针的指针,*a是指向一行一维数组的指针。但a作为数组名,又表示了数组首地址(在内存中元素地址是连续的)。a是第一行数组首地址。所以值相同 (注意只是值相同,比如a[n]和(*a)[n]意义就不一样,一个表示第n行...
为什么不能把
二维数组
名/行的首地址赋给
指针
?
答:
因为在C编程系统中,对于二维数组会看成数组元素为一维数组的一维数组,即对于二维数组aa[2][3],系统会看成aa[0]和aa[1],而aa[0]和aa[1]中分别包含三个元素,这就是系统对于
二维数组的
处理;所以直接把二维数组名赋给一个普通
的指针
变量,这个指针是指向元素aa[0]的,但实际上呢,aa[0]不...
c语言
中二维数组
a[i][j],为什么a=*a?
答:
0],是
二维数组
第一行的首地址。所以,二者是相同的地址值,即数据a[0][0]的地址值。也就是说,从值上,a,*a, a[0],&a[0][0]都是相同的值。当时,说a=*a也并不是完全正确的,从类型上,a等同于
二维指针
,而*a等同于一维指针。二者类型并不相同,只是在一定条件下可以转换。
c语言
中指针
那一章,定义
二维数组
a[5][6],(*p)[6],&a和a有什么区别?能...
答:
a[5][6]你会发现,a, *a, &a的值是相同的,介意义完全不同 首先这个数组是5行6列, 首先要明白a是一个地址,而且是第一列的地址 a+1是第二列的地址,a+2是第三列的地址...a是第一列第一个元素的地址,*a+1第一列第二个元素的地址...&a是整个
二维数组的
地址,&a+1是内存中紧跟...
*(p + 1) + 1; 谁能告诉我 这句话怎么理解
答:
如果是一维数组的话,下面很多人都说了。如果是二维数组a[2][3] *p=a;的话。p一开始指向的是第0行的地址=&a[0]。p+1以后指向第一行=&a[1]。这时候外面加个*并没有指向任何内容,依然是个地址,因为在
二维数组中
并不存在a[0]这个元素。这时候再加1得到的就是&a[1][1],就是第一...
一个指向一维
数组的指针
,为什么可以指向
二维数组
?
答:
二维数组
下标代表的是行和列的个数。int (*p)[3]; 这里是用指针的形式 声明一个新的数组,p = a; 这里把a
数组的
首元素地址赋给
指针数组
,此时新声明
的指针
数组就指向了a数组,*p就等于a[0];所以 (*p)[2]等价于a[2] = 3;一维数组下标为二的元素 ...
棣栭〉
<涓婁竴椤
5
6
7
8
10
11
12
9
13
14
涓嬩竴椤
灏鹃〉
其他人还搜