您的位置:首页 > 其它

字符串常量保存问题与字符数组和字符指针区分

2014-03-20 22:06 204 查看
下面两段代码:

1、#include "stdafx.h"

char *fun(void)

{

char s[]="china";

return s;

}

int main(int argc, char* argv[])

{

char *p;

p=fun();

printf("%s\n",p);

return 0;

}

2、#include "stdafx.h"

char *fun(void)

{

char *s="china";

return s;

}

int main(int argc, char* argv[])

{

char *p;

p=fun();

printf("%s\n",p);

return 0;

}

第一个输出乱码,第二个输出china。

分析:fun函数中的china存储在静态存储器,函数调用后一直存在。第一个s是局部字符数组变量,内容是从常量区复制过来的,函数结束以后s就消失了。第二个是静态区存放的地址。

参考资料;

1、http://www.2cto.com/kf/201304/205083.html

2、http://zhidao.baidu.com/link?url=ecTI7uWlMhUXxoIAzqLlhQwEKlepr9pSsdA8yu387aPB-eAg5El2DSdZjC0qGtKLXgdqjPAoO-WLoTQwTrYStK
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: