C语言指针函数问题
#include <stdio.h>
char *fun(void)
{
char *a = "hello";
return a;//&a[0]
}
int main(void)
{
char *p = NULL;
p = fun();
printf("%s\n", p);
return 0;
}
代码如上所示,指针函数的一个例子。请问各位大神们,char *fun(void)函数的返回值不应该是a的地址信息么? 在main中输出是的不就是a的地址信息么?为什么输出的是a的内容啊。。。。求解 C 指针函数
[解决办法]
//在函数中不要反回局部变量的地址
printf("%s\n", p); //s的输出格式是字符串格式,打印指针p所指向的字符串
打印地址要printf("%x\n", p)
[解决办法]
#include <stdio.h>
char *fun(void)
{
char *a = "hello";
return a;//&a[0]
}
int main(void)
{
char *p = NULL;
p = fun();
printf("%s\n", p); //这是打印字符串的格式
printf("%p\n", p); //打印地址
return 0;
}