1.使用時要有良好的習慣,當指標不確定指向時,將指標初始化為null。
char *ptr =null;
null //#define null (void *) 0
null是記憶體零位址,而且不能對零位址對應的記憶體空間進行操作。
只定義卻不初始化就會出現段錯誤,系統會隨機分配空間,記憶體洩漏。
2.當要向指標指向指向的空間賦值時要檢查其是否分配了空間,如果沒有分配空間,我們需要為其分配空間。
(char *) malloc (sizeof(char)*100);
malloc 函式可以分配空間,sizeof(char)*100可以提高**的移植性。
malloc 函式的返回值是乙個萬能指標 void *,萬能指標可以儲存任何型別指標的值,但是不能對其進行取值操作,所以用(char *)強制轉化型別,使其返回值與我們需要的指標型別一致。
這裡我們需要注意malloc 函式如果分配記憶體空間不成功 的話會返回乙個null指標,所以我們需要檢查記憶體空間是否分配成功。
3.檢查記憶體空間是否分配成功
#include
char *ptr=null ;
ptr = (char *)malloc(sizeof(char)*100);
if(ptr == null)
4.要對我們分配的記憶體空間進行清理,我們可以呼叫memset函式。
memset(ptr, '\0' , sizeof(char)*100);
5.當我們用完這個記憶體空間後,我們需要將這個空間釋放。
free(ptr);
6.釋放完空間後,我們需要將這個指標再置為null。
對指標使用const
const 是可以宣告常量的,宣告之後不能被修改。對於乙個指標和乙個陣列,我們有三種const 的形式 即const 指標的指向 這個指標不能指向別處 指向const的指標 不能通過這個指標修改指向的值 const 變數 這個位址的值不能被修改 假設有乙個陣列aa 與乙個指標p int const ...
個人對指標的指標理解
每次一看到兩個 號,就頭疼,終於在一次看源 時,看了半天才弄明白其中含義,所以寫一寫對指標的指標的理解。int main 以乙個小例子來說明 我們將a指標稱為一級指標 因為a指標變數儲存的位址儲存的是乙個具體的數值或者字元,反正不再是位址值 b稱為二級指標,因為b是指向指標的指標,以此類推long ...
對指標的總結
指標 pointer 就是記憶體的位址,c語言允許用乙個變數來存放指標,這種變數稱為指標變數。指標變數可以存放基本型別資料的位址,也可以存放陣列 函式以及其他指標變數的位址。程式在執行過程中需要的是資料和指令的位址,變數名 函式名 字串名和陣列名在本質上是一樣的,它們都是位址的助記符 在編寫 的過程...