a和a有什么区别?
假設數(shù)組int a[10];
int (*p)[10] = &a;
a是數(shù)組名,是數(shù)組首元素地址,+1表示地址值加上一個int類型的大小,如果a的值是0x00000001,加1操作后變?yōu)?x00000005。*(a + 1) = a[1]。
&a是數(shù)組的指針,其類型為int (*)[10](就是前面提到的數(shù)組指針),其加1時,系統(tǒng)會認為是數(shù)組首地址加上整個數(shù)組的偏移(10個int型變量),值為數(shù)組a尾元素后一個元素的地址。
若(int * )p,此時輸出*p時,其值為a[0]的值,因為被轉為int *類型,解引用時按照int類型大小來讀取。
總結
- 上一篇: 析构函数为什么写成虚函数?
- 下一篇: 数组名和指针(这里为指向数组首元素的指针