C++ memset()函数和bzero()函数
文章目录
- 1、memset函数说明
- (1)清空数组和初始化
- (2)清空一个结构体
- 2、类对象使用memset应注意的问题
- 3、bzero()函数简介
1、memset函数说明
memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度。
#include <string.h>
// 将s中的前n个字节用ch替换并且返回s,
void *memset(void *s,int ch,size_t n)
(1)清空数组和初始化
memset(buffer, 0, sizeof(buffer)) // 这个函数在socket很常用。
char a[100];
memset(a, '/0', sizeof(a)); // 初始化数组。
(2)清空一个结构体
// 在一段内存块中填充某一个给定的值,常用于较大的对结构体和数组的清零操作。
struct sample_struct
{char csName[16];int iSeq;int iType;
};
memset(&stTest, 0, sizeof(struct sample_struct));// 如果是数组:
struct sample_struct TEST[10];
memset(TEST, 0, sizeof(struct sample_struct)*10);
2、类对象使用memset应注意的问题
memset某个结构(或其它的数据类型)在C语言中是很常见的代码,其目的是对结构(或其它的数据类型)进行初始化,通常都是将变量置为NULL或者0。在C++中,针对类对象除了用构造函数初始化对象外,也可以使用memset来进行初始化操作(确实有这种情况,不得已而为之,请大家不要把鸡蛋砸过来!)。但是一定要注意以下所说的这种情况:如果类包含虚函数,则不能用 memset 来初始化类对象。
因为每个包含虚函数的类对象都有一个指针指向虚函数表(V-Table),这个指针被用于解决运行时以及动态类型强制转换时虚函数的调用问题。当进行memset操作时,虚函数表里的指针置NULL,这样一来,只要调用虚函数,程序便崩溃。
3、bzero()函数简介
#include <string.h>
// bzero() 会将内存块(字符串)的前n个字节清零;
// s为内存(字符串)指针,n 为需要清零的字节数。
// 在网络编程中会经常用到。
void bzero(void *s, int n);
C++ memset()函数和bzero()函数相关推荐
- memset 用法 linux,bzero, memset ,setmem 区别
bzero 原型:extern void bzero(void *s, int n); 用法:#include 功能:置字节字符串s的前n个字节为零. 说明:bzero无返回值. 举例: ...
- 拷贝构造,深度拷贝,关于delete和default相关的操作,explicit,类赋初值,构造函数和析构函数,成员函数和内联函数,关于内存存储,默认参数,静态函数和普通函数,const函数,友元
1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.第二种初始化的方式是直接在构造方法里面实现初始化. 案例如下: ...
- fread函数和fwrite函数,read,write
fread函数和fwrite函数 1.函数功能 用来读写一个数据块. 2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp ...
- getsockname函数与getpeername函数的使用
https://www.tuicool.com/articles/V3Avey getsockname和getpeername函数 getsockname函数用于获取与某个套接字关联的本地协议地址 ...
- 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)
[目录] 一.素数筛 1.素数判断 2.素数普通筛 3.素数线性筛 4.素数区间筛 二.欧拉函数筛 三.莫比乌斯函数筛 [素数筛] 1.直接判定质数 bool judgePrime( int num ...
- linux钩子函数和回调函数,Linux Kernel 学习笔记10:hook函数
(本章基于: Linux -4.4.0-37) linux 内核中有一套hook函数机制,可在不同hook点位置监控网络数据包,并执行丢弃.修改等操作.网络防火墙就是通过此机制实现的. 注册注销hoo ...
- C语言—字符串函数和内存函数
文章目录 1.前言 2.字符串函数 2.1 长度不受限制的字符串函数 2.1.1 strlen 内部细节 使用方法 模拟实现 2.1.2 strcmp 内部细节 使用方法 模拟实现 2.1.3 str ...
- fwrite函数与fflush函数
以下内容源于网络资源的学习与整理,欢迎交流. 一.fwrite函数 1.函数原型 size_t fwrite(const void *ptr, size_t size, size_t nmemb,FI ...
- fread函数和fwrite函数的用法
fread函数和fwrite函数 1.函数功能 用来读写一个数据块. 2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,co ...
- python函数知识点总结_函数总结_python函数总结_高中函数知识点总结 - 云+社区 - 腾讯云...
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! postgresql窗口函数总结postgresql窗口函数总结 1窗口函数说明 ...
最新文章
- python读取excel表格-Python读取Excel单元格的内容
- [《孔雀》观后]聪明的孩子提着易碎的灯笼
- mongodb一致性协议_mongo的怎么保持事物的一致性-问答-阿里云开发者社区-阿里云...
- mybatisplus 一次性执行多条SQL语句
- linux 不知道root密码怎么办,linux下忘记root密码怎么办
- 图片压缩的另一种实现(3)
- java保留小数_java保留两位小数4种方法
- Anaconda各版本对应的python版本
- 网页如何转pdf并实现下载
- linux加载显卡驱动模块,linux怎样加载显卡驱动,急,在线等
- 今日头条 mysql_今日头条的核心架构解析
- 浅谈机器人比赛中的系统工程和组织管理
- oracle 非等值关联 优化,Oracle优化器、优化模式、表的连接方式(Hash Join、Nested Loop、Sort Merge Join)...
- 3D建模,打印正当时
- 【深度学习】实战之MNIST
- 银河移民PHP面试,移民香港,我真的“后悔死了”
- nant_强制NAnt使用.NET Framework的特定版本进行构建和运行
- 最好的IDEA debug长文?看完我佛了
- 爬虫君子协议-robots.txt协议
- 解决Navicat连接mysql闪退问题