c++使用memset初始化数组
如果不明确指出初始化列表,那么基本类型是不会被初始化的(除全局变量和静态变量外),所有的内存都是“脏的”;而类类型则会为每个元素调用默认构造函数进行初始化。
使用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初始化数组相关推荐
- 使用memset初始化数组
写在前面的ATTENTION:用memset初始化非char型(eg. int型.float型-)数组时,假如初始化值非0,可能导致错误的结果. 先举个通常用法的栗子, 将int型数组arr的元素初始 ...
- C++:用memset初始化数组
1.初始化数组 定义完数组之后有三种初始化方式 int A[20]={0}; int A[20]; for(i=0;i<sizeof(A)/sizeof(A[0]);i++) A[i]=0; i ...
- memset() 初始化类对象
今天看到迅雷2014校招一道笔试题如下: [cpp] view plaincopy #include <iostream> using namespace std; class paren ...
- c/c++初始化数组的三种方法
1直接赋值 int a[10]={0}; //数组里面的所有元素全都变为0 2 利用for循坏来初始化数组 int a[20]; for(int i=0:i<=sizeof(a);i++) {a ...
- memset初始化内存
在suse 9,运行man memset 查看memset的解释如下: "NAME memset - fill memory with a constant byte SYNO ...
- java声明和初始化数组_Java 中初始化数组
数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...
- C++接收字符串数组_Java 中初始化数组
数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...
- 初始化 数组 java_如何用Java初始化数组
初始化 数组 java Today we will learn how to initialize an array in java. An array in java is a container ...
- java数组初始化0_Java自学-数组 初始化数组
Java 如何初始化数组 步骤 1 : 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { i ...
最新文章
- 网络扫描信息收集基于(Windows)
- java 二维数组作为参数传递_java JNI 二维数组作为方法参数传递给本地
- 深入理解WEB请求过程
- Java语言之数组_java语言之数组-----选择排序
- 存储过程C语言与PL/pgSQL实现的效率对比
- CVE-2020-1472 | Netlogon 特权提升漏洞预警
- oracle进行日志切换,Oracle存档日志切换案例操作
- C#数据库类(zz)
- 关于威联通升级5.0系统无法登录的解决办法(有用)
- 亚马逊测评自养号教程
- flex布局练习,仿手机淘宝首页
- 在快手工作是一种什么样的体验?
- SSD硬盘安装win10 且安装千牛工作台频繁卡死问题解决过程
- Longhorn时代,浏览器的终结?——关于Avalon和XAML
- 微信小程序如何转云开发
- 如何使用CAD编辑器来画箭头
- 天正建筑T20 V6.0 安装蓝屏解决方案
- JavaScript 实现页面滚动动画
- 华北电力计算机技术考研难度,华北电力大学(保定)计算机技术怎么样
- uniapp-微信小程序使用高德或腾讯地图的导航功能