如果不明确指出初始化列表,那么基本类型是不会被初始化的(除全局变量和静态变量外),所有的内存都是“脏的”;而类类型则会为每个元素调用默认构造函数进行初始化。

使用memset初始化数组,该函数是用来给某一块内存空间进行赋值的;包含在<string.h>头文件中,可以用它对一片内存空间逐字节进行初始化;

原型为 :

void *memset(void *s, int v, size_t n);

这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字节数;

注意,在memset使用时要千万小心,在给char以外的数组赋值时,只能初始化为0或者-1。

// OpenCVTest1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#pragma warning(disable:4996)
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;typedef struct dataTag
{char num[100];char name[100];int  n;
}Data;void main()
{Data a, b[10];int num[8];float distance[2][2];memset(&a, 0, sizeof(a)); //注意第一个参数是指针类型,a不是指针变量,要加&memset(b, 0, sizeof(b));  //b是数组名,就是指针类型,不需要加&memset(distance, 0, sizeof(distance));memset(num, 1, sizeof(num));//在memset使用时要千万小心,在给char以外的数组赋值时,只能初始化为0或者-1。for (int i = 0; i < 8; i++){std::cout<< num[i]<< endl;//结果不是1,而是16843009}}

这里num[i]为什么是16843009?

memset(num,1,sizeof(num))就是对num指向的内存的32个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是1000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了.

参考:https://www.cnblogs.com/2018shawn/p/9472506.html

c++使用memset初始化数组相关推荐

  1. 使用memset初始化数组

    写在前面的ATTENTION:用memset初始化非char型(eg. int型.float型-)数组时,假如初始化值非0,可能导致错误的结果. 先举个通常用法的栗子, 将int型数组arr的元素初始 ...

  2. C++:用memset初始化数组

    1.初始化数组 定义完数组之后有三种初始化方式 int A[20]={0}; int A[20]; for(i=0;i<sizeof(A)/sizeof(A[0]);i++) A[i]=0; i ...

  3. memset() 初始化类对象

    今天看到迅雷2014校招一道笔试题如下: [cpp] view plaincopy #include <iostream> using namespace std; class paren ...

  4. c/c++初始化数组的三种方法

    1直接赋值 int a[10]={0}; //数组里面的所有元素全都变为0 2 利用for循坏来初始化数组 int a[20]; for(int i=0:i<=sizeof(a);i++) {a ...

  5. memset初始化内存

    在suse 9,运行man memset 查看memset的解释如下: "NAME        memset - fill memory with a constant byte SYNO ...

  6. java声明和初始化数组_Java 中初始化数组

    数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...

  7. C++接收字符串数组_Java 中初始化数组

    数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...

  8. 初始化 数组 java_如何用Java初始化数组

    初始化 数组 java Today we will learn how to initialize an array in java. An array in java is a container ...

  9. java数组初始化0_Java自学-数组 初始化数组

    Java 如何初始化数组 步骤 1 : 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { i ...

最新文章

  1. 网络扫描信息收集基于(Windows)
  2. java 二维数组作为参数传递_java JNI 二维数组作为方法参数传递给本地
  3. 深入理解WEB请求过程
  4. Java语言之数组_java语言之数组-----选择排序
  5. 存储过程C语言与PL/pgSQL实现的效率对比
  6. CVE-2020-1472 | Netlogon 特权提升漏洞预警
  7. oracle进行日志切换,Oracle存档日志切换案例操作
  8. C#数据库类(zz)
  9. 关于威联通升级5.0系统无法登录的解决办法(有用)
  10. 亚马逊测评自养号教程
  11. flex布局练习,仿手机淘宝首页
  12. 在快手工作是一种什么样的体验?
  13. SSD硬盘安装win10 且安装千牛工作台频繁卡死问题解决过程
  14. Longhorn时代,浏览器的终结?——关于Avalon和XAML
  15. 微信小程序如何转云开发
  16. 如何使用CAD编辑器来画箭头
  17. 天正建筑T20 V6.0 安装蓝屏解决方案
  18. JavaScript 实现页面滚动动画
  19. 华北电力计算机技术考研难度,华北电力大学(保定)计算机技术怎么样
  20. uniapp-微信小程序使用高德或腾讯地图的导航功能

热门文章

  1. IPv6技术-什么是IPv6
  2. win7系统不兼容地下城与勇士怎么办?
  3. 函数高级① -- (函数的prototype、原型、原型链)
  4. icon-font图标介绍
  5. 在远程Linux服务器上卸载与安装图形化界面
  6. APISpace 二次号查询API
  7. 读论文:基于自监督知识的无监督新集域适应学习
  8. 数值范围_OBV指标上数值的秘密!股票若在数值范围内,出手便是强势股
  9. 如何恢复计算机工具栏,电脑任务栏怎么还原,详细教您怎么还原电脑任务栏
  10. C#如何定义全局变量