如何打印指向指针的指针
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 **
,但是在你原来的代码中,p
是 char *
,因此 p
和 sk
的 赋值是非法的 。
你可以做的事情:
将 p
分配给 sk
。将您的代码更改为:
p = sk;
printf("%s",p);
把p
改成char **
然后把指针sk
的地址赋给p
.
char **p;
p = &sk;
printf("%s",*p); //Prints the string pointed by the char **p
我正在使用此代码
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 **
,但是在你原来的代码中,p
是 char *
,因此 p
和 sk
的 赋值是非法的 。
你可以做的事情:
将
p
分配给sk
。将您的代码更改为:p = sk; printf("%s",p);
把
p
改成char **
然后把指针sk
的地址赋给p
.char **p; p = &sk; printf("%s",*p); //Prints the string pointed by the char **p