C&C++ - double pointers example

關於指標的定義,網路上已經可以找到很多說明,這邊主要會利用簡單的圖解來說明一個

例子,當一指標陣列的變數assign它的記憶體位址給雙指標時,其運作的過程。

利用一指標陣列儲存多個字串

char *str[] = { “abc”, “def”, “123”};

char **p;

p = str;

printf("%c", **p); //print a , why?

請看下面圖解(此記憶體位址只是我亂編的數字,範例使用)



所以依據圖解**p您可以看成是*(*(p+0)),其記憶體位址為0xF4509,因此以字元的形式印出

就會為a。

若您要將所有字串都印出的話,可以

while(*p){
        printf("%s\n", *p);
        p++;  
}
p++指的是原先p儲存的記憶體位址是0x12345,若遞移一次,以字元的型態看就是記憶體位

址進一,如此就會變成0x12346,而0x12346表示的就是str[1]本身自己的記憶體位址,注意

不是內容喔,*p才是指到他的內容0xX1509。

留言