我正在使用此代码
char *p=NULL;
char *sk="hello";
p=&sk;
printf("%s",p);
我想打印你好,但我拿地址(或%s的情况下的符号) 我该如何解决这个问题?
答案 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 *
,因此p
和sk
的分配是非法的。
你可以做的事情:
将p
分配给sk
。将您的代码更改为:
p = sk;
printf("%s",p);
将p
更改为char **
,然后为p
分配指针sk
的地址。
char **p;
p = &sk;
printf("%s",*p); //Prints the string pointed by the char **p