作者:拉扯作乱_991 | 来源:互联网 | 2023-05-17 10:31
memset和fill_n比較1.memset是对每个字节赋值,而int有4字节(32位)比如这样,memset(a,1,sizeof(a));则a中的每个元素都被赋值成为2进制数为,00
memset和fill_n比較
1.memset是对每个字节赋值,而int有4字节(32位)
比如这样,memset(a,1,sizeof(a));
则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数
转换成10进制就是16843009
所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现.
函数名: memset
//要包含头文件
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
用 法: void *memset(void *s, char ch, unsigned n);
程序例:
#include
#include
#include
int main(void)
{
char buffer[] = "Hello world/n";
printf("Buffer before memset: %s/n", buffer);
memset(buffer, '*', strlen(buffer) - 1);
printf("Buffer after memset: %s/n", buffer);
return 0;
}
注意它的用法,不一定是赋为0,其实就是把一个数组的每个单元写上ch,说明了就是写上一个数.
对于对int之类的数组,只能用memset对其初始化为0或-1。
如:int a[]; memset(a,0,sizeof(a)): //sizof(a)=sizeof(int)*n;
而对于char型,可以赋任何字符。
如:char a[]; memset(a,'0',sizeof(a));//sizeof(a)=1*n;
2,fill_n(void *s,unsigned n,char n)
//要包含头文件
与memset的不同不仅在于函数参数的顺序,而且对int型的数组赋值,fil_n可以赋任何值,而memset只能赋0或-1.