memset 初始化数组 & 实现原理

初始化数组可不必使用n重for循环。


原理

memset具有初始化数组的功能,能够初始化数组中的每一个值。

它是将数组中的每一个数的二进制的每一个字节初始化的。

比如初始化int类型的a数组:memset(a,1,sizeof(a)); 得到的其实是0001 0001 0001 0001。

关于0x......不懂的:我的博客

代码

#include<cstring>
如果是int数组:

  • memset(g, 0, sizeof(g));                   //全部清为0
  • memset(g, 0x7f, sizeof(g));    //可全部初始化为一个很大的数(略小于0x7fffffff);
  • memset(g, 0x3f, sizeof(g));    //稍小(适用于有加法运算)
  • memset(g, 0xbf, sizeof(g));    //负值稍大
  • memset(g,-1,sizeof(g));       //全部初始为-1

补充:初始化结构体

memset(结构体变量名,0,sizeof(变量名)); 即可将这个变量中的每一个成员变量都赋值为0。



能用到的差不多就这些了。

原文地址:https://www.cnblogs.com/yinyuqin/p/10162716.html

时间: 2024-10-14 15:48:59

memset 初始化数组 & 实现原理的相关文章

memset初始化数组的坑

memset函数常被我们用来初始化数组,然而有个坑可能会被我们踩到. 静态数组初始化 一般情形是这样的: #include <cstring> int main() { // 静态数组arr int arr[10]; // 将数组所有元素初始化为0 memset(arr,0,sizeof(arr)); // 遍历输出数组元素 for(int i=0;i<10;++i){ cout << arr[i] << endl; } return 0; } 这样做是正确的,通

memset 初始化数组

memset是初始化一段内存区域的函数,其头文件是<string.h>,以前经常使用出现错误,整理一下. C++ Reference对于memset的定义为: void * memset ( void * ptr, int value, size_t num ); 其中,对于memset的各个参数的定义如下: ptr: Pointer to the block of memory to fill. value: Value to be set. The value is passed as a

c++ 批量初始化数组 fill和fill_n函数的应用

转自c++ 如何批量初始化数组 fill和fill_n函数的应用 std::fill(a+2,a+10,0x3f3f3f3f);///从下标2到下标10 前闭后开 共8个 std::fill_n(a+2,10,0x3f3f3f3f);///从下标2 开始 填充10个 memset(a,0x7f7f7f7f,sizeof(a)); 一. fill和fill_n函数的应用: fill函数的作用是:将一个区间的元素都赋予val值. 函数参数:fill(first,last,val);//first为容

【转】c++ 如何批量初始化数组 fill和fill_n函数的应用

http://blog.csdn.net/sunquana/article/details/9153213 一. fill和fill_n函数的应用: fill函数的作用是:将一个区间的元素都赋予val值. 函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的尾迭代器, 替换元素的区间为[first,last),val为将要替换的值. eg:             vector <int> V;             fill(V.begin(

【转】c++中使用memset初始化类对象

https://blog.csdn.net/u010261063/article/details/70064090 1 #include <iostream> 2 #include <memory.h> 3 using namespace std; 4 5 class parent{ 6 public: 7 virtual void output(); 8 virtual void output2(); 9 }; 10 11 void parent::output(){ 12 co

C语言:实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置

#include<stdio.h> void init(int arr[],int len) {  int i=0;  printf("初始化数组->:\n");  for(i=0;i<len;i++)  {    scanf("%d",&arr[i]);   }  } void reverse(int arr[],int len) {  int i=0;  printf("逆置数组->:\n");  for

创建一个数组, 实现初始化数组、清空数组、完成数组元素的逆置。

#include <stdio.h> void init(int arr[],int len) { int i=0; int num=0; printf("初始化数组->:\n"); for(i=0;i<len;i++) { scanf("%d",&num); arr[i]=num; } } void empty(int arr[],int len) { int i=0; printf("清空数组->:\n"

c#清空数组&amp;初始化数组&amp;动态数组

清空数组>>>Array.Clear [去MSDN查看] 1 string[] str = new string[2]; 2 for (int i = 0; i < str.Length; i++) 3 str[i] = i.ToString(); 4 Array.Clear(str, 0, str.Length); 5 for (int i = 0; i < str.Length; i++) 6 Console.WriteLine(string.IsNullOrEmpty(

用enum枚举量做下标初始化数组

一下copy自:http://bbs.csdn.net/topics/90234659 ------------------------------------------------------------------------------------------------------------------- “两则C语言技巧”http://tb.blog.csdn.net/TrackBack.aspx?PostId=1120124第一个技巧在我的环境下不能通过,是我的原因吗.引用:1.