02-指針和數組簡介

《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 類型的數組

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章