数组名相当于一个指针吗?
可以说一维数组的数组名相当于一个指向数组元素数据类型的常量指针吗?那么二维数组名又相当于一个什么类型的指针呢?
[解决办法]
数组名并不是指针,也不是常指针,它和一般的变量名一样都是内存地址的助记符。不过大多数情况下,当数组名用于表达式或做函数参数时会被转化为指针,指向第一个元素的指针,对于int arr[5]来说,指针的类型是 int *,对于int arr[5][6] 来说 指针的类型是 int (*)[6].
[解决办法]
1)一维数组名字本身就是一个指针,是一个指针常量,即一维数组a等价于int * const a。
2)二维数组名是指向一维数组的指针。例如有个二维数组a[i][j],a是指向原来数组的第一行的指针,a+1就是指向第二行的指针,依次类推。
(以上参考《高质量程序设计指南》)
[解决办法]
一维数组名其实就是数组首地址,所以可以赋值给指针变量,也可以作为参数传给函数。数组名作形参的时候和指针是一样的
[解决办法]
数组名不是指针,只有在函数参数传递时才会把数组名看做指针
[解决办法]
可以视为一个常量指针;
多维数组其实和一维一样,因为数据在物理上是顺序存放的,所以,逻辑上的多维数组,其实在物理上还是一维连续的...
[解决办法]
数组在一些表达式中可以隐式的转化为指针
[解决办法]
相当于一个const指针
int a[5];
只能进行 *a, *(a + 1)
而不能进行 a++
[解决办法]