如何遍历指向指针的指针?

Gen*_*ene 0 c string pointers char

假设我有以下变量:

char c[] = "ABC";
char *ptr = &c;
char **ptr2 = &ptr;
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过这种方式迭代指向字符数组的指针:

int i;
for(i=0; i<3; i++){
    printf("TEST******************, %c\n", ptr[i]);
}
Run Code Online (Sandbox Code Playgroud)

如何遍历指向指针的指针?

Jam*_*sev 5

认为:

  6   char c[] = "ABC";
  7 
  8   char *ptr   = &c;
  9   char *ptr2  = ptr;       
 10   char **ptr3 = &ptr;   
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在这种情况下:

  • ptr代表一个地址c
  • ptr2表示 的地址ptr指向指针的指针
  • ptr3是存储在 中的ptr,它是 的地址c

**ptr3=&ptr意味着 - 取地址ptr,查看内部并将其值(不是地址)分配给ptr3

如果我正确理解您的问题,您需要使用指向指针的指针:ptr2在我的示例中而不是ptr3

如果是这样,您可以访问以下元素:

ptr2[0] = A
ptr2[1] = B
ptr2[2] = C
Run Code Online (Sandbox Code Playgroud)

为了记录,以下将产生相同的结果。尝试一下。

 12   printf ("===>>> %x\n", ptr2);
 13   printf ("===>>> %x\n", *ptr3);
Run Code Online (Sandbox Code Playgroud)

供您参考的好讨论在这里