<函数解析>|初识memset()函数

前言

  在最近使用素数筛的过程中,可以使用memset(函数)来简化初始化数组,避免使用for循环进行初始化

  通俗地讲memset是计算机中C/C++语言初始化函数。他的作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

函数介绍

  初步理解:将已开辟内存空间 s 的首 n 个字节的值设为值 ch
---->从地址s开始,将当前位置后面的n个字节用ch替换并返回s。

  进一步理解:对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化,毕竟他的头文件引用是 string.h

#include<string.h>
void *memset(void *p, int ch, size_t n);
             起始地址  设定值    n个字节

函数的定义

                                                         
在这里插入图片描述

                                           
  还是先上定义,memset简单来说就是从一个地址(ptr)开始,将连续的(num)大小的内存设置为value(它其实是一字节一字节地把整个数组设置为一个指定的值)

  比如在常见的素数筛(欧拉筛/线性筛)中我们就可以使用memset()来初始化
如下:

`memset(arr,1,sizeof(arr));`
//这里sizeof(arr)是代替了个数的大小,将整个数组初始化为设定值(1)
//当然也可以将sizeof换为5
//那么他的含义就是从arr[0](地址)开始,依次将五个连续的内存块(取决于数据类型)
//设置为我们设置的值(此处为1)

函数的实现样例

memset的常见使用

  1. memset() 函数常用于内存空间初始化。
  2. memset可以很快地清空一个结构类型的变量或数组。
  3. memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化

注意

  1. 表达式中的arr 其本质是一个地址(arr[0])
    详情移步----->数组详解
  2. memset是以byte为单位赋值的
  3. memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度,但是要小心长度的溢出例:
char a[100],b[50]; memcpy(b, a, sizeof(b));

如用sizeof(a),会造成b的内存地址溢出。

  1. strcpy就只能拷贝字符串了,它遇到’/0’就结束拷贝

进一步了解原理---->memset函数的原理及其日常用法

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值