由于你定义的 a 只是一个指针 因此sizeof(a)并非数组所占内存容量 而是int* 类型所占内存容量。
memset(a,0,sizeof(a));//调用函数初始化 a[]={0};//数组的初始化其实这个没有啥区别的,你在源码中写上。 a[] = {0}; 不需要再 memset(a,0,sizeof(a)); 拿vc6的编译器来说 a[] = {0}; 本身就相当于: a[]; memset(a,0,sizeof(a)); 你可以自己反汇编代码看一下。那...
memset在cstring头文件中 这句话用处为将a数组中的每个值都改成-1
memset是按照字节(byte)对a进行逐个填充 在ACM中,如果 a 的类型是 有符号整数(signed)那么可以用这...
比如memset(a, 1, sizeof(a)); 这行代码会使得数组a中的每个元素都被赋值为2进制数00000001000000010000000100000001,转换成十进制就是16843009。因此,通常我们会使用memset函数来对数组进行初始化为0或-1的操作,而对于其他数值的赋值,则需要使用循环来实现。关于NULL和\0的概念,NULL通常被定义为0。...
可以啊,当时memset的赋值的话,是以字节来赋值的 比如说memset(a,1,sizeof(a));并不是将各个元素赋值为1,而是赋值为10000000 10000000 10000000 10000000
memset(a,0,sizeof(a));另一个常见用法是将数组元素初始化为-1。代码如下:memset(a,-1,sizeof(a));更进一步,我们有时需要将数组元素初始化为一个较大的数值,如MAX值。这时,我们可以利用0x3f3f3f3f作为初始化值,它等于1061109567。这样做的好处是,每个字节都是0x3f,这在一定程度上简化了...
正确的初始化方式应该考虑到int的大小,通常为4个字节,因此正确的memset语句应该是:memset(a, 1, sizeof(a)/sizeof(int))。这是因为memset函数以字节为单位进行赋值,如果直接使用sizeof(a),得到的是指针的长度,而不是数组的长度。关于所要赋值的字符数的写法,当数组作为参数传递时,传递的是...
memset(a,1,16);//int所占内存为4字节的情况memset(a,1,sizeof(a)); 至于为什么不是预期得到的1,将在下面的第二点进行说明。 当然,不同的机器上int的大小可能不同,所以最好用sizeof()函数。 2、为什么第一个程序可以正确赋值1而第二个不可以?
1.memset是对每个字节赋值,而int有4字节(32位) 比如这样,memset(a,1,sizeof(a)); 则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数 转换成10进制就是16843009 所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现. ...