本文共 1129 字,大约阅读时间需要 3 分钟。
此文章转载自:
数组名和指针之间,经常会交替使用这两个变量,比如,把一个指针当成数组来使用,或者是把数组名赋值给指针,通过指针来访问数组成员变量,但是,数组名和指针之间到底有什么样的联系与区别,以及什么情况下该使用指针,什么情况下该使用数组名,我对这个做一个小小的解读。。
而在上面的运行结果中,我们发现arr==&arr,这说明arr的地址就是arr,arr代表一个地址,arr本身就是一个地址,又根据arr==&arr[0]可知,arr是arr数组首元素的地址,所以arr作为数组名时,它的红圈,绿圈和篮圈代表的是同一个含义——数组首元素的地址。
这是数组名和指针不同的第一点: 数组名取地址得到的是数组名所指元素的地址。 对指针取地址得到的是指针变量自身的地址。区别2:
数组是固定大小的,数组一经定义,那么数组名就是一个指向数组首元素类型的常量指针,也就是说数组名是不允许更改的,而指针可以更改。 数组名是常量指针,指针是变量指针。区别3:
1.当对数组名使用sizeof时,得到的是数组元素的个数乘元素类型的字节数,对指针sizeof得到的是指针类型的字节数。2.对数组名取&和对指针取&的意义不同。
2.当出现sizeof,和&操作符时,数组名不再当成指向一个元素的常量指针来使用,而指针仍当成指向一个元素的变量指针来使用。
对于使用指针和数组下标的选择:
系统在使用数组下标对数组成员变量进行访问时,开销比较大,指针的访问效率是远远大于数组名的访问效率的。 但是只有在指针正确访问时,才成比下标法更有效率。 下标法更加容易理解,在可读性方面,也更加的具有优势,具体怎么选择,也没有一定的说法。