补充说明下隐式转化为指针,简单说就是这样(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]”这个类型了,跟多级指针没关系,因此,多维数组不存在到多级指针的转化规则,强转只会导致问题
懵蓝初梦
2024-05-02 07:14:22
二维数组由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。 当变量作为函数的参数时,函数内修改的是形参,实参不变化;(swap(int a, int b)) 当指针作为函数的参数时,函数内:若修改指针变量,实参指针指向变量不变。若修改指针指向,实参指针指向的变量变化。(swap(int *a, int *b))