可以說我有以下變量:如何迭代指針指針?
char c[] = "ABC";
char *ptr = &c;
char **ptr2 = &ptr;
我知道我可以一個指針迭代到字符數組,這樣一來:
int i;
for(i=0; i<3; i++){
printf("TEST******************, %c\n", ptr[i]);
}
如何遍歷一個指向指針?
可以說我有以下變量:如何迭代指針指針?
char c[] = "ABC";
char *ptr = &c;
char **ptr2 = &ptr;
我知道我可以一個指針迭代到字符數組,這樣一來:
int i;
for(i=0; i<3; i++){
printf("TEST******************, %c\n", ptr[i]);
}
如何遍歷一個指向指針?
對於示例:
int i;
for(i=0; i<3; i++){
printf("TEST******************, %c\n", (*ptr2)[i]);
}
如果我沒有誤解你的問題,這個代碼應該做一個工作
printf("TEST******************, %c\n", (*ptr2)[i]);
假設:
6 char c[] = "ABC";
7
8 char *ptr = &c;
9 char *ptr2 = ptr;
10 char **ptr3 = &ptr;
在這種情況下:
ptr
代表c
ptr2
的地址代表的ptr
的地址。 甲指針的指針ptr3
是值存儲在ptr
,這是c
的地址。**ptr3=&ptr
意味着 - 取ptr
地址,看看裏面,並指定其值(不是地址)ptr3
如果我明白你的問題正確,則需要使用指針的指針:在我的例子ptr2
代替的ptr3
如果是這樣,你可以訪問相同的元素:
ptr2[0] = A
ptr2[1] = B
ptr2[2] = C
對於以下記錄將會得到相同的結果。嘗試一下。
12 printf ("===>>> %x\n", ptr2);
13 printf ("===>>> %x\n", *ptr3);
供參考很好的討論是here
僅有一個供參考:所述'&C'是類型'炭(*)[4]'(指針的4個字符陣列)的值:'C '不衰減到表達式'ptr =&c;'中的第一個元素的指針。你的編譯器應該在分配中警告不兼容的類型... – pmg