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

惑!memset初始化字符串 零 0x00 的区别

2013-01-17 
惑!!!memset初始化字符串 00x00 的区别char str[100]memset(str,0x00,sizeof(str))/*16进制的0*/memset(

惑!!!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确实是一个好习惯,它体现了一个程序员对于移植性的意识。
[解决办法]

引用:
我刚刚做了一个实验
环境:AIX 6.1 , CC 
代码如下:

C/C++ code

    +1  #include <stdio.h>
    +2
    +3  int main(){
    +4          struct test{
    +5                  int a;
    +6                  char ……


怎么会输出a呢?我测试的输出结果都是0

   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");

}

[解决办法]
我擦,楼主怎么测试的,什么操作系统,什么编译工具
还有 memset(c,0,sizeof(c));应该是
 memset(&c,0,sizeof(c));吧

热点排行