2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > memset 和 fill 初始化数组

memset 和 fill 初始化数组

时间:2021-12-10 23:44:47

相关推荐

memset 和 fill 初始化数组

memset函数:

#include <string.h>void *memset( void *buffer, int ch, size_t count );

功能是:

拷贝 ch 到 buffer 从头开始的 count 个字符里,并返回buffer指针。 可以将一段内存初始化为某个值。

例如:memset( the_array, '\0', sizeof(the_array) );

有一点特别注意的是:memset按照字节初始化,就是说如果声明的数组是int arr[100];,每个元素都为int型,占4字节,但是memset仍会一个字节一个字节的赋值。

比如memset(arr,1,100);,1的十六进制是0x01,那么数组arr中的每个元素就变成了0x01010101。转化成十进制就是16843009。

不过赋值为0和-1这两个数并不受影响,因为0的十六进制是0x00,-1的十六进制是0xFF。这两个数在内存中不论用几个字节表示都是一样的(全0或全F)。

所以memset适合于char类型的数组。

fill函数:

如果需要在一个int或其他类型上的数组进行赋值,可以使用fill函数。头文件是#include<algorithm>

功能是:

将一个区间内所有元素都赋以val的值。可以有以下两种用法

fill(vec.begin(), vec.end(), val);

fill(arr,arr+n,val);

如果需要赋一个最大值,可以包含一个头文件:#include<climits>

然后使用fill(arr,arr+n,INT_MAX);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。