《C語言深度解剖》第四章筆記
1、
在32位系統下,不管什麼樣的指針類型,其大小都是四字節。
int *p;
這個語句的理解:一個 "int * " 的模子在內存上“預定”4字節的空間,然後把這四字節的空間命名爲p。且這4字節的空間裏面只能存某個內存地址(即使存入別的數據,也會被當作地址處理)。
2、
int a[5];
sizeof(a)的值是20,sizeof(a[0])的值是4.
sizeof(&a)是取a的首地址,是4,即sizeof(&a[0])
3.
int *p1[10];
int (*p2)[10];
指針數組:是數組,數組裏的元素都是指針,又名“存儲指針的數組”
數組指針:是指針,指向一個數組,32位系統下永遠都是4字節。
分析:
- “[ ]” 的優先級要高於“ * ”,p1先與“ [ ] ”結合,構成一個數組的定義(數組名叫p1),int * 修飾的是數組的內容,即數組的每個元素,所以,第一句是:這是一個數組,包含10個指向int的指針。
- (*p2)是指針定義,p2是指針變量名,int 修飾的是數組的內容。p2是指針,指向一個包含10個int 類型的數組