如何打印指向指针的指针

时间:2015-03-25 11:20:09

标签: c pointers printing

我正在使用此代码

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

我想打印你好,但我拿地址(或%s的情况下的符号)  我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

p = &sk; // put the address of pointer sk in p

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

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

答案 1 :(得分:1)

试试这个:

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);

答案 2 :(得分:1)

p = &sk;

上述声明将sk的地址分配到p,其中p需要char **,但在原始代码中,p是一个char *,因此psk分配是非法的

你可以做的事情:

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

    p = sk;
    printf("%s",p);
    
  2. p更改为char **,然后为p分配指针sk的地址。

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