這幾個個東東很具有迷惑性。
int a=10; ? ? ?//假設a的地址是 0x0000004C
int *p; ? ? ? ? ? //假設p的地址是 0x0035FA94
p=&a;
指針的內容:指針里面存放的是地址。
指針p里面存放的是a的地址(&a)。即指針p里面存放的內容是0x0000004C。
指針的地址:指針本身的地址。
指針p的地址就是&p。指針p的地址是0x0035FA94
指針所指向的內容:也就是指針里面存放的地址,那塊地址里面存放的內容,通過對指針進行*引用可以拿到那個值。
*p就是指針所指向的內容(*p=10)。
指針的類型:從語法上,只要去掉指針聲明中指針的名字,剩下的就是指針的類型。
例如:1、 int *p; 的類型是int。
? ? ? ? ? ?2、 char *p;的類型是char。
? ? ? ? ? ?3、void *p; ?空類型的指針。
指針所指向的類型:當通過指針來訪問所指向的內存時,指針所指向的類型 ? 決定了編譯器將指針所指向的內存區里面的內容 ? ?當做什么類型來看待。
例:1、int *p;指針所指向的類型是int;
? ? ? ?2、char *p;指針所指向的類型是char;
? ? ? ?3、int (*p)[2];所指向的類型是int()[2]
? ? ? ?4、void *p;void表示指針指向的數據類型不確定。
? ? ? ?5、int **p;表示一個指向整形指針的指針。