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

请问strlen()的有关问题

2012-03-19 
请教strlen()的问题程序如:void main(void){char a[]{a}char b[]{a,b,c}coutsizeof(a)end

请教strlen()的问题
程序如:
void main(void)  
{  
char a[]={'a'};
char b[]={'a','b','c'};
cout<<sizeof(a)<<endl;
cout<<strlen(a)<<endl;
cout<<sizeof(b)<<endl;
cout<<strlen(b)<<endl;
}
输出为:1 7 3 11
sizeof()可以理解,但strlen()函数的输出无法理解,请教指点,谢谢。

[解决办法]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。

[解决办法]
VC6.0和楼主得到同样的结果
DEVC++得到的结果是1 2 3 7 
strlen在没有遇到‘\0’时的结果应该和具体的编译器处理方式有关

热点排行