如何打印指向指针的指针

How to print a pointer pointing to a pointer

我正在使用此代码

char *p=NULL;
char *sk="hello";
p=&sk;
printf("%s",p);

我想打印 hello 但我取地址(或符号,如果是 %s)。
我该如何解决?

试试这个:

char **p=NULL; 
char *sk="hello"; 
p=&sk; // p should be a pointer-to-pointer to char
printf("%s",*p);

char *p=NULL; 
char *sk="hello"; 
p=sk; 
printf("%s",p);
p = &sk; // put the address of pointer sk in p

注意这是违法的! p的类型是char*&sk 的类型是 char**。这些类型不兼容。您的编译器应该警告过您不兼容类型之间的分配。

打开所有编译器警告并注意它们!

p = &sk;

上面的语句将sk的地址赋值给p,需要p是一个char **,但是在你原来的代码中,pchar *,因此 psk 赋值是非法的

你可以做的事情:

  1. p 分配给 sk。将您的代码更改为:

    p = sk;
    printf("%s",p);
    
  2. p改成char **然后把指针sk的地址赋给p.

    char **p;
    p = &sk;
    printf("%s",*p); //Prints the string pointed by the char **p