二級指標和字元指標陣列的區別

2021-08-15 10:59:32 字數 652 閱讀 3158

char *str = ;

這是字元指標陣列,每乙個陣列元素是乙個指標變數,而每個指標變數指向字串首字元位址,即是字串的位址。因為每乙個字串都代表的是乙個位址,是字串首字元的位址。字串常量是放在文字常量區,是不可以更改的。而指標陣列str裡面存放的是指向字串位址,它是可變的。如str[0] 是可變的,它是指標變數,但是*str[0]是不可變的,它在試圖改變字串常量"abc"的首字元中的a。

二級指標與字元指標陣列是不同的,類似char **p = ;是錯誤的。p只是乙個二級指標變數,也僅僅是乙個指標變數,只能放乙個位址。

char *str = ;

char **p = str;

這樣的寫法是正確,str代表的是這個指標陣列的首元素位址,是乙個指標。str = &str[0],而str[0]本身又是指向字串"abc"的指標,所以指標的指標當然用二級指標來存放。

二級指標常用的用法是在函式傳參過程中。void fun(char *str)這樣的函式,函式中的的形參編譯器會當作指標處理,不是陣列,所以可以寫成void fun(char **str)

void fun(char **p);

void fun(char *p[100])

void fun(char *p)

這三個是等價的,編譯器都是當作char **p處理的

二級指標與陣列指標的區別

今天早上遇到乙個問題,我想向函式裡面傳送乙個二維陣列int matr ix m ax max int matrix max max intmat rix max max 我採用的方法是二級指標,我當時的考慮是二維陣列名的二級解引用是乙個整數,整型二級指標的的二級解引用也是乙個整數,所以我想當然地就認...

二級字元指標

一級字元指標指向乙個字元,一級字元指標的一般有兩種使用場合 指向乙個字元和指向乙個字串。二級字元指標指向的是乙個一級字元指標,如 void main3 下面的草圖簡要說明了上述 的指標指向 在函式中交換兩個字元指標的值 void fun char p1,char p2 void main 下面的草圖...

一級指標 二級指標 指標和陣列 指標陣列

一級指標 int p 上述 定義了乙個一級指標變數,int為基型別。指標變數的基型別用來指定此指標變數可以指向的變數的型別。一級指標變數也就是儲存著另外乙個變數位址的變數 在定義指標時應注意指標變數必須指定基型別。且必須給指標變數賦初值,在不確定該指標變數要指向什麼的時候應該給其賦null,否則該指...