strlen以\0为结束标志的问题
我用strlen故意测试一个不带\0的字符串长度时,每次运行输出结果总是一样
#include <stdio.h>
int main()
{
char a[2] = {'a','b'};
printf("%d\n",a);
return 0;
}
每次运行都是输出6,然后我把系统重启之后仍然是6,再然后我把字符处修改成
char a[3] = {'a','b','c'};
结果就是7了,我又加一个之后结果就是8了。
这一点我不明白!按说应该是不确定的值啊,但是每次都是确定的一个值并且好像每次都是固定的。好像strlen向后找到一定位数之后就停止了似的!
[解决办法]
你增加字符后,数组也跟着改变,数组申请的空间也跟着变了,%d输出的数组的基址
[解决办法]
这个与编译器有关,a[]后面有空闲的内存都用0填充了
[解决办法]
这样你看看就知道了
#include<stdio.h>
void DumpMemory(char *Address)
{
unsigned char *p=(unsigned char *)Address;
int i;
for(i=0;i<20;++i)
{
printf("%02X ",*p);
++p;
}
printf("\n");
}
int main()
{
char a[2] = {'a','b'};
printf("%d\n",a);
DumpMemory(a);
return 0;
}