88问答网
所有问题
C 语言指针的指针和二维数组的区别?
如题所述
举报该问题
推荐答案 2016-05-06
指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针
补充说明下隐式转化为指针,简单说就是这样(T是任意类型)
设有一个数组T a[10];
a的类型是“T [10]”,在做大多数运算的时候,都先隐式转化为“T *”类型,即T的指针
对于多维数组,可以看做是一个一维数组,数组的元素类型就是第二维开始的数组类型,比如:
T a[10][20][30];
是一个有10个类型为“T [20][30]”元素的数组,用代码解释更清晰:
typedef T U[20][30];
U a[10];
跟上面的定义等价,所以a只能隐式转化为“U *”,“U *”展开后也就是“T (*)[20][30]”这个类型了,跟多级指针没关系,因此,多维数组不存在到多级指针的转化规则,强转只会导致问题
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/SBMVKMKcgSBtVMVgMg.html
其他回答
第1个回答 2016-05-09
二维数组由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。
当变量作为函数的参数时,函数内修改的是形参,实参不变化;(swap(int a, int b))
当指针作为函数的参数时,函数内:若修改指针变量,实参指针指向变量不变。若修改指针指向,实参指针指向的变量变化。(swap(int *a, int *b))
相似回答
二维数组与指针的指针
有何
区别
答:
最大的区别是数组不能被直接赋值
,比如二维数组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 *p;int **q;q = &p; //把一级指针p的地址赋值给二级指针q。二维数组:int arr[4][5]; //定义了一个4行5列的数组数组指针:指向数组的指针。int arr[4][5];int (*p)[5]; //指针p是指向数组的指针,你可以...
一个关于
C语言的指针与二维数组的
问题
答:
C语言中,
数组和指针是两类不同的类型——前者的定义需要明确被指向的类型,后者的定义需要明确元素类型和数组的长度
。这样定义的原因是两者本身的语义不同。引用一个表示数组的标识符(数组名)具有两重含义,一是指整个数组,二是指指向数组首个元素(而不是整个数组)的指针。具体取两种含义是上下文相...
二维数组
和一维
指针数组的区别
答:
即board[0]与&board[0][0]的值是一样的。 又因为上面第一层的解释中我们已经知道了board[0]的值与board、*board、&board[0]相等。所以说上面
程序
中的五条输出语句的结果是一样的。好了,说了那么多。不知道听晕了没有。总之,
二维数组
是由两层构成的。 其本质是因为二维数组在内存里面是连续...
数组指针的
指向一维数组
和二维数组的区别
答:
一、指向一维
数组的指针
变量设一维数组为a[n]定义方法:*指针变量名即*P这个p一般指向的一维数组的首地址,即p=a,或者p=&a[0];p,a,&a[0]均指向同一单元,它们是数组a的首地址,也是0号元素a[0]的首地址。p+1,a+1,&a[1]均指向1号元素a[1]。类推可知a+i,a+i,&a[i]。例子:...
指向
指针的指针和二维数组
名等同吗?
答:
int **p;这是指向
指针的指针
,表示指针变量p应指向一个指针的地址,注意一定要是指针的地址才不会出错,比如 int a=1; int *p1=&a; int **p=&p1;不能是int **p=&a;因为变量a不是指针,同理 对二维数组a[2][3]的数组名 这里要注意,这里的数组名并不是一个简单的指针,
二维数组的
数组...
C语言指针数组与二维数组
行指针小问题
答:
a[2]=3;
不同
的是数组name存放的是指针,数组a存放的是数字 name[1]=name[2]表示的是把name[2]
的指针
赋值给name[1]就不难理解了。
二维数组的
行名:LZ假设的数组char name[5][20]是一个二维数组,行名name[1]表示的是一个指向字符串的指针没问题吧,这个指针中存放的是一个字符串,或者说是...
C语言
中
二维数组
名是不是可以看作
指针数组
名?
答:
不可以,二维数组要看做“数组的数组”。(以如下定义为例:int a[4]; int * p;)给你个对于指针和数组的正确理解吧:定义的不同:C 里,
指针和数组是不同的类型
,不要把数组名看做“常指针”。所以 sizeof(a) 和 sizeof(p) 值是不同的。容易被混淆的原因:a. 都有基础类型。b. 数组...
大家正在搜
C语言二维数组的定义初始化赋值
C语言二维数组的初始化
C语言二维数组的特点
C语言中的二维数组
C语言中二维数组的引用
C语言二维数组定义
C语言输出二维数组
C语言中二维数组随机赋值
C语言怎么输入二维数组
相关问题
C语言怎么用指针代替二维数组
C语言中“二维数组行指针”是什么意思?
c语言指向指针的指针,与二维数组
c语言二维数组用指针表示的问题
C语言中二维数组行指针是什么
求C语言高手指点:请问如何指针定义二维数组?? 请用 **p...
c语言 指针表示二维数组问题
c语言指针:a为二维数组,那a[0]是什么类型?是指针还是数...