+ -
当前位置:首页 → 问答吧 → c语言中看似不确定的内存访问

c语言中看似不确定的内存访问

时间:2010-08-25

来源:互联网

char *str;
char *str1;

str="";
str1="1";

printf("%c %c %c %c",str[0],str[1],str[2],str[3]);

linux gnu gcc下,你能知道输出吗?(不要怀疑有段错误)

作者: lpy_222   发布时间: 2010-08-25

这个输出应该是依赖编译器对.data段或者.text段的布局。而且编译器可能会对定义的字面常量进行对齐操作。
所以不同的编译器结果会不同。不过这样做除了了解编译器的构造外对写程序倒没什么帮助,debug应该还能用上一点。

作者: davelv   发布时间: 2010-08-25

别钻这种牛角尖,意义不大

作者: hellioncu   发布时间: 2010-08-25

结果和我想的差不多,字符数据不用对齐,内存构造是这样的。
'\0','1','\0',"%c %c %c %c"
把str指向开头。输出结果便一目了然了。

作者: davelv   发布时间: 2010-08-25

回复3楼的,

你说的我明白,我也是在调试的时候偶然遇到这个情况。固然,这个只能当做“游戏”了解。

作者: lpy_222   发布时间: 2010-08-25