原因: memset是按字节赋值的,取变量a的后8位二进制进行赋值。 1的二进制是(00000000 00000000 00000000 00000001),取后8位(00000001),int型占4个字节,当初始化为1时,它把一个int的每个字节都设置为1,也就是0x01010101,二进制是00000001 00000001 00000001 00000001,十进制就是16843009。 之所以输入0,-1时正确,...
因此 memset 不能像循环赋值一样,完成对内存完成 4 bytes 为周期的周期性填充(而只能把所有字节都赋值为相同值),但汇编语言可以。 因此,假设有一个整数数组 a[],如果把所有元素赋值为 0,可以用 memset (a, 0, sizeof ( a )); // 这可能是 memset 使用中最常见的情况 如果把所有元素赋值为 -1 ( sig...
memset只有赋值是-1,0是正确的,原因如下:用memset初始化数组为1出错-CSDN memset是按字节赋值的,取变量a的后8位二进制进行赋值。1的二进制是(00000000 00000000 00000000 00000001),取后8位(00000001),int型占4个字节,当初始化为1时,它把一个int的每个字节都设置为1,也就是0x01010101,...
这样呢,就将数组a内所有的值都赋成0了,sizeof是一个一元操作符,得到数组a的字节大小。 另外需要注意的是,memset函数是逐字节进行填充,所以a一般为char *型。对于其它类型的a,可以填充的值有两个,0和-1。因为计算机中用二进制补码表示数字,0和二进制补码为全0,-1的二进制补码为全1。 memset是一个字节一个...
函数原型:void *memset(void *s,int ch,int n);功能:将内存中某一块的每个字节设置为ch,块大小为n,n是以字节为单位的 题目要求是:初始化一个整形数组,并且让他输出全为1 如果你偏要输出1的话,可以这样,把1当作字符 int a[5];memset(a,'1',5*sizeof(int));
百度试题 结果1 题目 int类型的数组a,执行memset(a, 0, sizeof(a));后,所有元素自动初始化为0,所以,执行memset(a, 1, sizeof(a));后,所有元素自动初始化为1。( ) 参考答案( ) 相关知识点: 试题来源: 解析 错误 反馈 收藏
include <string.h> void *memset( void *buffer, int ch, size_t count );功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。include <stdio.h> include <string.h> int main(int argc, char *argv[]){ int *map...
百度试题 结果1 题目 int类型的数组a,执行memset(a, 0, sizeof(a));后,所有元素自动初始化为0,所以,执行memset(a, 1, sizeof(a));后,所有元素自动初始化为1。( ) A:错 B:对 答案( ) 相关知识点: 试题来源: 解析 错误 反馈 收藏 ...