說起指針,這是很多人頭疼的問題,因爲它這幾個概念相當混淆,下面我們來分析一下這幾個概念:
int num = 10; //假設num的地址是0x0000004C
int *p = NULL; //假設p的地址是0x0035FA94
p = #
指針的內容:指針裏面存放的是地址
指針p裏面存放的是num的地址(&num),即指針p裏面存放的內容是0x0000004C
指針的地址:指針本身的地址
指針p的地址就是&p,指針p的地址是0x0035FA94
指針所指向的內容:也就是指針裏面存放的地址,那塊地址裏面存放的內容,通過對指針進行解引用可以拿到那個值
*p就是指針所指向的內容(*p = 10)
指針的類型:從語法上講,只要去掉指針聲明中指針的名字,剩下的就是指針的類型
例如:int *p = NULL; (其中指針p的類型爲int*)
char *p = NULL; (其中指針p的類型爲char*)
指針所指向的類型:當通過指針來訪問所指向的內存時,指針所指向的類型決定了編譯器將指針所指向的內存裏面的內容當做什麼來看待
例如:int *p = NULL; (指針所指向的類型是int)
char *p = NULL; (指針所指向的類型是char)
int (*p)[2]; (指針所指向的類型是int( ) [ ])