- 0
- 0
- 约6.94千字
- 约 11页
- 2017-09-21 发布于上海
- 举报
字符串的存储方式以及静态存储区域、栈、堆
2010-10-10 10:51 488 人阅读评论(4) 收藏举报
下面两篇文章分析得比较详细.转自
/yangdelong/archive/2010/04/03/5447362.aspx
文章来源/shiwei0124/archive/2009/11/26/4877546.aspx
字符串的存储方式以及静态存储区域、栈、堆
在编程的时候偶尔会遇到一个字符串的问题,好像是这样说:不能把 const char* 转换成
TCHAR * ,只是这个错误有时候有,有时候没有,也没有深入关注过,只知道 abc 应该
是一个const 型的。
今天偶然看到2 个帖子,终于对这个问题有了比较清晰的理解
贴一:
/u17/900b3797-3642-4569-a623-dc0f8ebd8401.html?see
d=1325371970
#include stdio.h
int A()
{
int test=10;
return test;
}
int main()
{
int a=A();
printf(%d/n,a);
return 0;
}
上面的代码能编译通过 我想问 在A() 函数中的 test 变量的生存期不是只在A()函数体内
吗? 怎么还能成功返回呢
下面的这段代码为何就不行呢 两个程序中的变量生存期有什么区别啊?
#include stdio.h
char* A()
{
char p[]=hello world;
return p;
}
int main()
{
char *str=NULL;
str=A();
printf(%s,str);
}
比较好的答案是:
一:
关键在这里:
int a=A();
实际是a=test;之后test 挂掉了,我们不管,反正有a.
而
str=A();
就是str=p.
之后p 跟p 指向的堆区都挂了,可是str 依然孤独地指向p 那片挂掉的堆区.
明白了不?
二:
注意
int A()
{
int test=10;
return test;
}
返回的是值, 的确调用完后test 会释放, 但它的值被返回了
而
char* A()
{
char p[]=hello world;
return p;
}
返回的是指针, 确切讲是指针的值, 但因为hello world会释放, 所以返回的这个指针值没
用了
(存放字符串的空间被释放掉了, 这个指针值还有什么用?)
然后在看第二帖:
/u10/8e6dfe37-b12f-410f-9e02-83eaad1c30a0.html?2569
2
问题:
先看贴
/u17/900b3797-3642-4569-a623-dc0f8ebd8401.html?see
d=1325371970
这个帖子里面斑竹回答的内容,感觉很深刻。正确。但是实验一下时候出现点问题
C/C++ code
char *FuncC()
{
char* a=hello word;
return a;
}
char *FuncB()
{
char a[]=hello word;
return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *b,*c;
c = FuncC();
b = FuncB();
char a[100];
::memset(a,NULL,100);
strcpy(a,c);
std::coutA=a B=b C =cendl;
getchar();
return 0;
}
输出结果:
C/C++ code
A=hello word B=p_/*(操作未知)*/ C=hello word;//我也认为C 结果也是未定义的,但是不管
怎么操作,结果都对啊
唯一不同的是 FuncB 中,返回的是局部指针数组的头指针,FuncC 中返回的是局部指针的
副本。他们都在编译时候确定大小,分
您可能关注的文档
最近下载
- 学霸作文里的“骚话公式”(5个).pdf VIP
- 欧姆龙制氧机说明书1C_IM_HAO-3620、3720、3721、3722、3710、3711、3712.pdf VIP
- 基于S7-1200的异步电机速度跟随控制系统设计与实现.doc
- 第五讲量化与编码.ppt VIP
- 无人机飞行管理及应用:无人机飞行的空管需求PPT教学课件.pptx
- 无人机操作技术-无人机自动机场.pptx VIP
- SYT 7388-2017 石油天然气钻采设备 钻井用空气锤和冲击钻头.docx VIP
- 直线定向示范课.ppt
- SYT 7421-2018 石油天然气钻采设备 钻井和修井用管柱自动化处理系统.pdf VIP
- 谢冕评志摩的诗.doc VIP
原创力文档

文档评论(0)