首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大家给看看一个有关字符串的有关问题

2013-01-07 
大家给看看一个有关字符串的问题#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是局部变量,存在栈里面的,函数返回的时候栈空间会被销毁掉,原来的东西都不存在了,所以是乱码
可以去搜下一个程序各个部分在内存中的分布情况的相关资料

热点排行