C语言数组名a和&a有什么区别?
C语言数组名a和&a有什么区别?
a表示的是a[0]的起始地址,而&a表示的整个数组的起始地址。只是恰好他们表示的地址相等,但并不能说他们两个就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能说浙江省政府就等于杭州市政府。 为了方便理解,我们来对数组进行运算。假设a的地址是0x00ffff00,那么a+1和&a+1分别是多少。 因为a表示的是a[0]的首地址,所以a+1加的就是一个a[0]元素的大小,即一个int的大小4,所以a+1为0x00ffff04 &a代表的是整个数组的首地址,所以&a+1加的就是整个数组的大小,即4*5=20,所以&a+1为0x00ffff14 其实他们完全是两回事,只不过刚好数值上相等而已。
答:在数组已经使用了一部分时,要括充数组长度并且要让数据连续存储只有一个办法, 就是新建一个更长的数组,把原来的数组元素复制过来,然后清除原数组. 这样,新数组就达...详情>>