惑!!!memset初始化字符串 0 0x00 的区别
char str[100];
memset(str,0x00,sizeof(str)); /*16进制的0*/
memset(str,0,sizeof(str)); /*10进制的0*/
看老鸟们很多都写16进制的。
但我是用10进制的也没有发现什么问题啊?
请各位高人指教!
谢谢!
[解决办法]
0x00在常量区里占1个字节,
0在常量区里占sizeof(int)个字节。
虽说memset(str,0,sizeof(str)); 时,会只保留0的低8位,结果一样。
但用0x00确实是一个好习惯,它体现了一个程序员对于移植性的意识。
[解决办法]
int main(){
struct test{
int a;
char b;
};
struct test c;
c.a = 1;
c.b = 'a';
memset(&c,0x00,sizeof(c));
/* memset(&c,0,sizeof(c));;*/
printf("%c,%d\n",c.b,c.a);
system("pause");
}