奥礼网
新记
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]”这个类型了,跟多级指针没关系,因此,多维数组不存在到多级指针的转化规则,强转只会导致问题
温馨提示:内容为网友见解,仅供参考
当前网址:
https://aolonic.com/aa/nwag4a4d1nwkgag1a1.html
其他看法
第1个回答 2016-05-09
二维数组由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。
当变量作为函数的参数时,函数内修改的是形参,实参不变化;(swap(int a, int b))
当指针作为函数的参数时,函数内:若修改指针变量,实参指针指向变量不变。若修改指针指向,实参指针指向的变量变化。(swap(int *a, int *b))
相似回答
大家正在搜
相关问题
C语言怎么用指针代替二维数组
C语言中“二维数组行指针”是什么意思?
c语言指向指针的指针,与二维数组
c语言二维数组用指针表示的问题
C语言中二维数组行指针是什么
求C语言高手指点:请问如何指针定义二维数组?? 请用 **p...
c语言 指针表示二维数组问题
c语言指针:a为二维数组,那a[0]是什么类型?是指针还是数...