大家给看看一个有关字符串的有关问题
大家给看看一个有关字符串的问题#include stdio.hchar *func1(){char p[10] testreturn p}char *f
大家给看看一个有关字符串的问题
#include <stdio.h>
char *func1()
{
char p[10] = "test";
return p;
}
char *func2()
{
char *p = "test";
return p;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *a = func1();
char *b = func2();
printf("%s\n%s",a,b);
return 0;
}
输出 a 为什么是乱码??
[解决办法]又是这个问题
func1返回了指向已经销毁的局部变量的指针,所以乱码
func2返回了指向常量字符串的指针,所以正确
[解决办法]char *func1()
{
char p[10] = "test";
return p;
}
这里返回的p是局部变量,存在栈里面的,函数返回的时候栈空间会被销毁掉,原来的东西都不存在了,所以是乱码
可以去搜下一个程序各个部分在内存中的分布情况的相关资料