专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

字符串相关,该如何解决

发布时间:2011-06-28 16:15:59 文章来源:www.iduyao.cn 采编人员:星星草
字符串相关
在函数中

char a[]=“adsfadsf”;

其中字符串是存在静态区,但a是个局部变量,

存储方式不是冲突了吗,请求解答。

------解决方案--------------------
char a[]=“adsfadsf”;

a是局部对象--一个char类型的数组(在栈区).
“adsfadsf”的确是常量字符串,是在静态区的(勉强这么分区吧)."

char a[]=“adsfadsf”;
//这句的意思是用常量字符串"adsfadsf"初始化数组a.运行到这里时会把a执行一个类似strcpy(a,"adsfadsf");这样的动作.

a是可以修改了,他只是常量字符串的copy

------解决方案--------------------
我的#4不完全正确(又没看清,今天有点晕)
a[]会在栈上申请空间,然后将常量字串拷入
看下汇编便知:
Assembly code

 ;    char a[]="adsfadsf";
 ;    
@1:
    mov       eax,dword ptr [$elambaia]  //$elambaia在常量段_DATA    segment 
    mov       dword ptr [ebp-12],eax      //a[]在栈上,这段程序是将数据copy入
    mov       eax,dword ptr [$elambaia+4]
    mov       dword ptr [ebp-8],eax
    mov       al,byte ptr [$elambaia+8]
    mov       byte ptr [ebp-4],al
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: