c語言指標詳解
1.什麼是指標?
指標是一個變數,用來存放地址,存放在指標中的值都被當成地址來處理
2.為什麼存在指標?
從記憶體說起,計算機中的程式要執行起來首先要將程式載入到記憶體,那如何合理的分配時使用記憶體呢?
我們將記憶體分成多個小的單元,每個單元都對應一個獨一無二的地址,這樣就一個地址標識一塊空間
經過仔細的計算和權衡我們定義每個小的單元是一個位元組,對於32位機器,有32根地址線,那麼假設沒很地址線會產生一個電訊號(0/1),那麼32根地址線能產生的地址就是2的32次方個。每個地址便是一個位元組,那麼我們就可以對4g的空間進行編址。
總結:
- 指標式因為存放地址才出現的,地址就是為了標識一塊地址空間的
- 指標讓地址有地方存放,指標讓記憶體的訪問更加方便
- 指標在32位平臺上式4個位元組,在64位平臺上式8位元組
- 對於32位機器來說,地址線有32根,使用它的地址是由0/1組成的32位二進位制效率,那地址就得用4個位元組的空間來儲存,所以一個指標變數的大小是4位元組。而64位平臺,有64根地址線,所以需要8個位元組來存放
3.指標和指標型別
指標的型別是: type *
char * 型別的指標是為了存放char型別變數的地址,
int * 型別的指標是為了存放int型別變數的地址……以此類推
為什麼指標要有型別呢?
- 有型別的區分,使得編碼更加嚴謹
- 不同型別的指標指定了其解引用時可以訪問記憶體的大小,char* 解引用只能訪問一個位元組,int *解引用可以訪問4個位元組
- 不同型別的指標+-整數時表示的意義不一樣,指標的型別決定了指標向前或者向後走一步有多大(距離),char型別的指標+-向前或後移動1個位元組,int型別指標+-向前或向後移動4位元組的大小
4.二級指標:
指標變數也是變數,是變數就有地址,那麼指標變數的地址存放在哪裡呢——二級指標
int a = 10;
int* pa = &a;
int **ppa = &pa;
通過對ppa的解引用就可以得到pa的地址,*ppa其實訪問的就是pa
int b = 20;
*ppa = &b;//等價於pa = &b;
通過對*ppa解引用就可以找到a,先通過*ppa找到pa,在對pa進行解引用操作找到a,即**ppa就是a;
**ppa = 30;
//等價於*pa = 30;
//等價於a= 30;
注:對二級指標+/-1,在32位平臺下,移動四個位元組,多個指標+/-1,都是+/-4個位元組
5,指標的運算
- 指標+-整數
指標+/-n <==> n*sizeof(type)
- 指標-指標
在同一記憶體空間裡(同一陣列/同一字串),指標相減,結果是倆個指標之間的元素個數,並不是位元組數
int a[10];
int *p = &a[5];
int *q = &a[9];
printf("%d\n",q-p);
//輸出是4
- 標準規定,允許指向陣列元素的指標向陣列最後一個元素後面的那個記憶體位置的指標比較,單數不允許與指向第一個元素之前的那個記憶體位置的指標進行比較
相關文章
- C語言指標詳解(一)C語言指標
- C語言指標詳解(二)C語言指標
- C語言指標C語言指標
- c語言指標彙總C語言指標
- C語言指標用法大全C語言指標
- C語言 函式指標C語言函式指標
- C語言指標筆記C語言指標筆記
- C語言基礎-指標C語言指標
- C語言指標學習C語言指標
- C語言指標(二) 指標變數 ----by xhxhC語言指標變數
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- C語言函式傳遞指標引數的問題詳解C語言函式指標
- C語言知識彙總 | 51-C語言字串指標(指向字串的指標)C語言字串指標
- C語言知識彙總 | 56-C語言NULL空指標以及void指標C語言Null指標
- C語言 指標與陣列C語言指標陣列
- C語言基礎-1、指標C語言指標
- c語言實現this指標效果C語言指標
- 搞清楚C語言指標C語言指標
- C語言指標基本知識C語言指標
- 詳解c++指標的指標和指標的引用C++指標
- c語言-運算子,陣列,指標C語言陣列指標
- C語言指標常見問題C語言指標
- C語言 printf詳解C語言
- C語言#define詳解C語言
- c語言函式指標的定義C語言函式指標
- C語言指標應用程式設計C語言指標程式設計
- C語言學習之:指標與字串C語言指標字串
- c 語言指標操作經典問題指標
- c++ 智慧指標用法詳解C++指標
- c語言運算子詳解C語言
- C/C++語言精髓 *和&詳解C++
- C語言指標和陣列筆試題C語言指標陣列筆試
- C\C++語言重點——指標篇 | 為什麼指標被譽為 C 語言靈魂?(一文讓你完全搞懂指標)C++指標
- c語言之解釋複雜指標C語言指標
- GO語言————4.9、指標Go指標
- C語言-srand種子詳解C語言
- 指標詳解指標
- C語言指標總結大學霸IT達人C語言指標
- 如何掌握 C 語言的一大利器——指標?指標