memset学习
学习 memset
2023-09-14 09:11:22 时间
转自:http://c.biancheng.net/view/231.html
1.定义
memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。
该函数的原型为:
# include <string.h> void *memset(void *s, int c, unsigned long n);
将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。
memset 一般使用“0”初始化内存单元,而且通常是给数组或结构体进行初始化。
赋值为 '\0' 和 0 是等价的,因为字符 '\0' 在内存中就是 0。所以在 memset 中初始化为 0 也具有结束标志符 '\0' 的作用,所以通常我们就写“0”。
2.例子
# include <stdio.h> # include <string.h> int main(void) { int i; //循环变量 char str[10]; char *p = str; memset(str, 0, sizeof(str)); //只能写sizeof(str), 不能写sizeof(p) for (i=0; i<10; ++i) { printf("%d\x20", str[i]); } printf("\n"); return 0; }
根据memset函数的不同,输出结果也不同,分为以下几种情况: memset(p, 0, sizeof(p)); //地址的大小都是4字节 0 0 0 0 -52 -52 -52 -52 -52 -52 memset(p, 0, sizeof(*p)); //*p表示的是一个字符变量, 只有一字节 0 -52 -52 -52 -52 -52 -52 -52 -52 -52 memset(p, 0, sizeof(str)); 0 0 0 0 0 0 0 0 0 0 memset(str, 0, sizeof(str)); 0 0 0 0 0 0 0 0 0 0 memset(p, 0, 10); //直接写10也行, 但不专业 0 0 0 0 0 0 0 0 0 0
相关文章
- 深度学习经典算法 | 模拟退火算法详解
- 深入学习requests模块
- 【单片机入门】(一)应用层软件开发的单片机学习之路-----基础知识入门
- 7.Go编程快速入门学习
- 机器学习Hello World:波士顿房价预测(线性回归模型)
- 基于深度学习的人脸识别考勤系统设计
- 卷到纯数学:MyEncyclopedia号主亲历并总结了一份AI工程师的纯数学课程学习之路
- 使用机器学习训练你的游戏AI
- Selenium WebDriver API 学习笔记(一):元素定位
- 综述:机器学习中的模型评价、模型选择与算法选择!
- java学习笔记06–正则表达式详解编程语言
- 学习Linux:初探命令行操作(linux操作系统命令行)
- 学习Oracle:创建表的基本语句(oracle创建表语句)
- 解密Persado背后的秘密武器:机器学习如何创作营销内容
- Mysql数据库入门:从零开始学习一种流行的关系型数据库技术(数据库mysql入门)
- 自主学习:在本地搭建MSSQL服务器(本地搭建mssql)
- MySQL下载64位解压,快速学习数据库开发(mysql下载64位解压)
- 比较详细的javascriptDOM学习笔记