C語言指標的總結
- C語言
- 關注:7.71K次
指標(Pointer)就是記憶體的地址,C語言允許用一個變數來存放指標,這種變數稱為指標變數。下面小編給大家介紹C語言指標的總結,歡迎閱讀!
C語言指標的總結指標變數可以存放基本型別資料的地址,也可以存放陣列、函式以及其他指標變數的地址。
程式在執行過程中需要的是資料和指令的地址,變數名、函式名、字串名和陣列名在本質上是一樣的,它們都是地址的助記符:在編寫程式碼的過程中,我們認為變數名錶示的是資料本身,而函式名、字串名和陣列名錶示的是程式碼塊或資料塊的首地址;程式被編譯和連結後,這些名字都會消失,取而代之的是它們對應的地址。
定 義 | 含 義 |
---|---|
int *p; | p 可以指向 int 型別的.資料,也可以指向類似 int arr[n] 的陣列。 |
int **p; | p 為二級指標,指向 int * 型別的資料。 |
int *p[n]; | p 為指標陣列。[ ] 的優先順序高於 *,所以應該理解為 int *(p[n]); |
int (*p)[n]; | p 為二維陣列指標。 |
int *p(); | p 是一個函式,它的返回值型別為 int *。 |
int (*p)(); | p 是一個函式指標,指向原型為 int func() 的函式。 |
1) 指標變數可以進行加減運算,例如p++、p+i、p-=i。指標變數的加減運算並不是簡單的加上或減去一個整數,而是跟指標指向的資料型別有關。
2) 給指標變數賦值時,要將一份資料的地址賦給它,不能直接賦給一個整數,例如int *p = 1000;是沒有意義的,使用過程中一般會導致程式崩潰。
3) 使用指標變數之前一定要初始化,否則就不能確定指標指向哪裡,如果它指向的記憶體沒有使用許可權,程式就崩潰了。對於暫時沒有指向的指標,建議賦值NULL。
4) 兩個指標變數可以相減。如果兩個指標變數指向同一個陣列中的某個元素,那麼相減的結果就是兩個指標之間相差的元素個數。
5) 陣列也是有型別的,陣列名的本意是表示一組型別相同的資料。在定義陣列時,或者和 sizeof、& 運算子一起使用時陣列名才表示整個陣列,表示式中的陣列名會被轉換為一個指向陣列的指標。
- 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/cyuyan/00xdv0.html