陣列和指標的問題
對於一段程式,處理器先進行編譯再執行。無論變數原先是定義為指標還是陣列,編譯器都會根據宣告提取變數的型別地址資訊。接著再根據地址訪問陣列或者指標。
定義宣告為陣列,用陣列訪問:
char a[6]="asdfgh";
c = a[1];
虛擬碼是:取a的值 ; //編譯器知道a是一個地址常量,所以a的值就是一個地址
然後將a的值加上偏移量1,得到一個新的地址;
取新地址的值賦給c;
定義宣告為指標,用指標訪問:
char * a="asdfgh";
c = a[1];
虛擬碼是:取a的值 ; //編譯器知道a是一個指標變數,所以a的值就是a的內容,即一個指向字元的地址
然後將a的值加上偏移量1,得到一個新的地址;
取新地址的值賦給c;
可見不論是訪問定義宣告的陣列還是定義宣告的指標,c = ‘d’。
當定義為陣列,宣告為指標,訪問時就會出現問題
a[]為一個外部陣列,
extern char *a;
c = a[1];
虛擬碼是:取a的值 ; //編譯器認為a是一個指標變數,所以a的值就是a的內容,a的內容是a[0],是字元a,將會把a作為一個指向字元的地址來用,顯然是錯誤的。
然後將a的值加上偏移量1,得到一個新的地址;
取新地址的值賦給c;
地方
相關文章
- 指標陣列和陣列指標與二維陣列指標陣列
- 陣列指標,指標陣列陣列指標
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- 關於二維陣列指標的問題陣列指標
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 指標陣列與陣列指標指標陣列
- C陣列和指標陣列指標
- 雙指標查詢陣列的連續規律子陣列問題指標陣列
- C----陣列越界問題、指標入門陣列指標
- C語言指標和陣列筆試題C語言指標陣列筆試
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- 陣列指標陣列指標
- C指標和陣列的關係詳解指標陣列
- 【C進階】28、指標和陣列分析指標陣列
- 日常學習儲存--陣列和指標陣列指標
- 【C】 28_指標和陣列分析(上)指標陣列
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 二維陣列的指標的理解陣列指標
- 透過指標引用陣列指標陣列
- 二維陣列與指標陣列指標
- 陣列和列表的轉換問題陣列
- 要點1:指標、陣列和複合字面量指標陣列
- 子陣列異或和問題陣列
- 陣列累加和問題三連陣列
- vue 陣列和物件渲染問題Vue陣列物件
- 【原創】淺談指標(九)二維陣列和多級指標相關指標陣列
- 指標陣列練習排列字串指標陣列字串
- C語言 指標與陣列C語言指標陣列
- 子陣列的最大異或和問題陣列
- 陣列的最小不可組成和問題陣列
- c語言-運算子,陣列,指標C語言陣列指標
- c程式設計--指標與陣列C程式程式設計指標陣列
- 陣列,函式與指標 詳解陣列函式指標
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- php陣列問題PHP陣列
- 資料結構和演算法面試題系列—C指標、陣列和結構體資料結構演算法面試題指標陣列結構體
- leetcode題解(陣列問題)LeetCode陣列
- 3-6指標與陣列的天生姻緣指標陣列
- (C語言)使用指標列印陣列的內容C語言指標陣列