回答:
如果以这样的方式声明数组 int a[256]={0}; 则数组内全部数字自动初始化为0,即一开始数组内所有元素的值为0 如果这样声明 int a[256]; 则数组没有初始化,则开始时数组内的数字可以是任意值。 注意不是楼上所说,memset是对每个字节赋值,而int有4字节(32位) 比如这样,memset(a,1,sizeof(a)); 则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数 转换成10进制就是16843009 所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现。 关于NULL,\0: stdio.h中有这句: #define NULL 0 NULL在编译时都转换为0了; \0是ascll码中编号为0的那个字符,也就是(int)(\0)==0;