当前位置: 首页 > news >正文

memset函数

目录

一、memset函数定义

二、 memset函数代码描述

三、代码测试[2]

四、参考文献 


一、memset函数定义

 void *memset(void *s, int ch, size_t n);
1、返回类型 void *表示任何类型的指针都可以传入memset中[1]。
2、参数void *表示任何类型的指针。
3、size_t表示sizeof()函数的返回类型,表示无符号整数。
 

二、 memset函数代码描述

void * memset(void *s, int ch, size_t n) {
    unsigned char *su = s;
    for (size_t i = 0; i < n; ++i) {
        su[i] = (unsigned char)ch;
    }
}

2.1、将int类型转换为unsigned char类型的内存描述
比如int类型占用四个字节,数字2在内存中按字节存储形式[2]。

 图1 int类型内存中字节存储形式

unsigned char类型占用一个字节,数字0在内存中按字节存储形式。

 图2 unsigned char类型内存中字节存储形式 

备注:

1.为什么采用unsigned char ?

        因为unsigned char是char类型中内存最小单位(1字节)。

2.采用unsigned char * 是否更改数组类型?
        memset函数是将内存空间内的每一个字节都设置为指定值,不更改原来数组的类型,它只是对字节进行逐一设置值。
3.只能对int数组初始化为0和-1[3-4]


 

int类型由数字2更改为数字0后,字节储存形式。

 图3 int类型更改后内存中字节存储形式  

三、代码测试[2]

#include <stdio.h>
#include <string.h>
 
int main()
{
    int arr[10];
    memset(arr, 0, sizeof(arr)); // 将数组全部初始化为0
    for(int i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

四、参考文献 

[1].void 指针 void* 到底什么意思?_void*是什么意思-CSDN博客 
[2].【C语言】memset()函数详解(内存块初始化函数)-CSDN博客
[3].memset的用法详解-CSDN博客
[4].memset 简介_qt memset-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【CSS】背景
  • 【C++】C++17中可以存储任意类型数据的对象——any类的使用与设计思想
  • 【小程序 - 大智慧】Expareser 组件渲染框架
  • C++中vector类的使用
  • Spring后端直接用枚举类接收参数,自定义通用枚举类反序列化器
  • 极狐GitLab 重要安全版本:17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10
  • 计算机网络第四章——网络层
  • mtk平台编译出来的cust.dtsi有什么作用
  • JVM频繁Full GC问题的排查与解决方案
  • SpringBoot使用validation进行自参数校验
  • 未来数字世界相关技术:数字人、元宇宙、全息显示
  • 2024新动态:低代码开发占领新常态市场
  • 智能抠图怎么使用?4个快速消除图片背景的小技巧
  • FPGA随记-二进制转格雷码
  • pytorch 加载模型参数后 如何测试数据,应用模型预测数据,然后连续变量转换成 list 或者numpy.array padans并保存到csv文件中
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • css的样式优先级
  • Gradle 5.0 正式版发布
  • JSDuck 与 AngularJS 融合技巧
  • 聚簇索引和非聚簇索引
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 数据结构java版之冒泡排序及优化
  • 学习HTTP相关知识笔记
  • 《码出高效》学习笔记与书中错误记录
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ionic入门之数据绑定显示-1
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #13 yum、编译安装与sed命令的使用
  • (33)STM32——485实验笔记
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Python第六天)文件处理
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (论文阅读30/100)Convolutional Pose Machines
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET程序员迈向卓越的必由之路
  • .NET运行机制
  • @ComponentScan比较
  • @RequestMapping 的作用是什么?
  • [ C++ ] STL---仿函数与priority_queue
  • [AX]AX2012 SSRS报表Drill through action
  • [exgcd] Jzoj P1158 荒岛野人
  • [GHCTF 2024 新生赛]ezzz_unserialize
  • [iOS]Win8下iTunes无法连接iPhone版本的解决方法