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

字符串相关,该如何解决

2012-03-19 
字符串相关在函数中char a[]“adsfadsf”;其中字符串是存在静态区,但a是个局部变量,存储方式不是冲突了吗,

字符串相关
在函数中

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 

热点排行