结论:memset函数赋值是按字节进行的,并不会自动匹配元素类型,因此一般只用来赋0值。
测试代码:
#include<stdlib.h>
#include<stdio.h>
int main(int argc, char **argv)
{
int *a = (int *)malloc(10 * sizeof(int));
memset(a, 3, 10 * sizeof(int));
printf("%d\n", a[0]);
return 0;
}
运行结果:
[mmhe@k231 chapter5]$ ./test
50529027
分析:50529027对应的二进制为:00000011000000110000001100000011,而二进制00000011表示十进制的3,本平台中的int有4Byte,因此memset函数是将每一个字节都赋予了3对应的二进制。