1)指針是一個變量,是用來存放地址的變量,佔有內存空間,用來保存內存地址;spa
2)在指針聲明時,*號表示所聲明的變量爲指針指針
在指針使用時,*號表示操做 「指針所指向的內存空間中的值」;code
*p至關於經過地址找到一塊內存,而後操做內存;blog
*p放在等號左邊賦值(給內存賦值);內存
*p放在等號右邊取值(從內存獲取值);class
3)指針變量和它所指向的內存塊是兩個不一樣的概念變量
含義1:給p賦值p=0x1111;只會改變指針變量值,不會改變所指向的內容;數據類型
含義2:給*p賦值*p='a';不會改變指針變量的值,只會改變所指向的內存塊的值;數據
含義3:等號左邊*p表示給內存賦值;等號右邊*p表示取值;語言
4)指針是一種數據類型,是指它的內存空間的數據類型
含義1:指針步長(p++),根據所指向內存空間的數據類型肯定
C語言規定:要釋放內存必須從內存首地址開始釋放
1 char *p = NULL; 2 p = (char *)malloc(100); 3 4 if (!p == NULL) 5 { 6 free(p); 7 p = NULL; 8 }
free(p)是釋放p所指向的內存空間的內容,而指針變量p中的值仍是存在的,須要把p指向NULL,防止產生野指針