对于绝大多数编译器来讲,
char namekey[15]="";
与
memset(namekey,0x0,sizeof(namekey));
或memset(namekey,'\0',sizeof(namekey));
这三个是一样的。
但是有的编译器,
char namekey[15]="";只将namekey[0]给赋值为'\0',其他成员还是随机值,也就是未初始化的值
还有人用memset(namekey,0,sizeof(namekey)); 初始化内存块。
这是肯定是错误的。因为数字0的ascii码是48,'\0'的的ascii码是0.
所以推荐使用下面的2种方式初始化字符串内存块。
memset(namekey,0x0,sizeof(namekey));
或memset(namekey,'\0',sizeof(namekey));