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

每日一个C库函数-#1-memset()

每日一个C库函数-#1-memset()

来源

C 标准库 - <string.h>

声明

void *memset(void *str, int c, size_t n);
  • str:要填充的内存块;
  • c:要被设置的值(以何值填充)。该值以 int 形式传递,填充内存块时使用该值无符号字符形式;
  • n:填充的字符数。一般用 sizeof() 来获取;
  • RETURN:返回一个指向存储区 str 的指针。

用法&作用&注意事项

  • 对一个内存空间或变量进行清空(初始化),一般设置为 0
struct sample s;memset(&s, 0, sizeof(s));
  • 若对指针变量所指向的内存单元进行清零初始化,一定要先对指针变量(eg: p)进行初始化,使其指向一个有效的地址,此时 n 不是 sizeof(p),而应该是 sizeof(*p)
char str[10];
char *p = str;
memset(str, 0, sizeof(str));	// √ memset(p, 0, sizeof(str));
memset(p, 0, sizeof(*p));		// × *p 表示字符变量,1个字节
memset(p, 0, sizeof(p));		// × p 表示地址,4个字节
  • 注意n的取值
int array[] = {0};memset(array, 1, 6);// array[0] = 16843009
// array[1] = 257/* 原因: 小端模式
array deinit: 00 00 00 00, 00 00 00 00, ...memset: 01 01 01 01, 01 01 00 00, ...array[0] , array[1] , ...01010101 , 00000101 , ...
%d: 16843009 ,      257 ,	
*/
http://www.lryc.cn/news/169146.html

相关文章:

  • GraphQL基础知识与Spring for GraphQL使用教程
  • 【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析
  • 威胁的数量、复杂程度和扩散程度不断上升
  • NSSCTF web 刷题记录2
  • Linux驱动之INPUT子系统框架
  • Long类型雪花算法ID返回前端后三位精度缺失问题解决
  • 6.8-SpringIoC之循环依赖底层源码解析
  • Springboot 实践(18)Nacos配置中心参数自动刷新测试
  • uniapp引入小程序原生插件
  • 自己记录微信小程序开发遇到的问题
  • 【leetcode 力扣刷题】栈—波兰式///逆波兰式相关知识和题目
  • Web 第一步:HTTP 协议(基础)
  • 【Vue】快速入门案例与工作流程的讲解
  • LuatOS-SOC接口文档(air780E)--camera - codec - 多媒体-编解码
  • 《动手学深度学习 Pytorch版》 6.6 卷积神经网络
  • 【微信小程序】项目初始化
  • C#,《小白学程序》第二十六课:大数乘法(BigInteger Multiply)的Toom-Cook 3算法及源程序
  • destoon自定义一个archiver内容文档
  • 5-1 Dataset和DataLoader
  • IDEA创建完Maven工程后,右下角一直显示正在下载Maven插件
  • 最新清理删除Mac电脑内存空间方法教程
  • 【调试经验】MySQL - fatal error: mysql/mysql.h: 没有那个文件或目录
  • 腾讯mini项目-【指标监控服务重构】2023-08-12
  • kubeadm部署k8sv1.24使用cri-docker做为CRI
  • 在c#中使用CancellationToken取消任务
  • 【项目经验】:elementui多选表格默认选中
  • 外星人入侵游戏-(创新版)
  • HTML 学习笔记(基础)
  • 最小二乘法
  • 使用stelnet进行安全的远程管理