头文件: #include<string.h>

函数原型: void* memset(void* mem_loc, int c, size_t n);

参数说明:
第一个参数void* mem_loc:已开辟内存空间的首地址,通常为数组名或指针,由于其为void*,故函数能为任何类型的数据进行初始化。

第二个参数int c:初始化使用的内容,取器低字节部分。

第三个参数size_t n:需要初始化的字节数。

函数功能: 将已开辟内存空间 mem_loc 的首 n 个字节的值设为值 c。

注意 1:
第二个参数int c是 int 类型,实际上只截取其低字节部分进行初始化。此函数是按字节初始化的,其第三个参数指定的是需要初始化的字节数。

#include<stdio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main()
{char char_arr[5];int int_arr[10];int* int_malloc_ptr = (int*)malloc(sizeof(int) * 15);memset(char_arr, 0, sizeof(char_arr));          // 数组名可以使用sizeof(arrName), 1 * 5 = 5memset(int_arr, 0, sizeof(int_arr));           // 4 * 10 = 40memset(int_malloc_ptr, 0, sizeof(int) * 15); // 4 * 15 = 60return 0;
}

注意 2: 对于 char 类型的内存块,初始化为任何字符都没有问题。但对于其他类型的内存块,初始化的数值为 0 或 -1 时没有问题,初始化值为其他时,由于取低字节进行初始化,并按照字节进行初始化,会出现与业务逻辑不符的情况。

#include<stdio.h>
#include<string.h>int main()
{int int_arr[10];// 1 的十六进制为0x0000000000000001 (4个字节),低字节为0x0001。// 使用 1 进行初始化 int 时,一个 int 会被初始化为0x0001000100010001 (4个字节)memset(int_arr, 1, sizeof(int_arr));return 0;
}

疑问: 为什么第二个参数是 int 类型而不是 char 类型呢?
答:有兴趣可以具体拓展了解一下,有说为了兼容C89的规定的,也有别的解释的。

C语言memset()函数详解相关推荐

  1. c语言memset对应java,C语言memset函数详解

    C语言memset函数详解 memset() 的作用:在一段内存块中填充某个给定的值,通常用于数组初始化与数组清零. 它是直接操作内存空间,mem即"内存"(memory)的意思. ...

  2. memset函数及其用法,C语言memset函数详解

    在前面不止一次说过,定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生"烫烫烫烫烫烫"这样的野值,俗称"乱码 ...

  3. C语言memset函数详解(Linux下和windows下的差异)

    memest原型 (please type "man memset" in your shell) void *memset(void *s,  int c, size_t n); ...

  4. c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍

    memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的: 包含在头文件中,可以用它对一片内存空间逐字节进行初始化: 原型为 : void *memset(void *s, int v, si ...

  5. memset函数详解

    memset函数详解 memset函数为初始化函数,可以将一段连续的内存初始化为某个值. 但它是以字节为单位进行初始化的. memset函数的一般使用格式为 memset(首地址,值,sizeof(地 ...

  6. Memset 函数详解

    Memset函数详解 需要的头文件 在C中<string.h> 在C++中<cstring> 函数介绍 memset 原型:extern void *memset(void * ...

  7. R语言which函数详解以及Rcpp改写

    R语言which函数详解以及Rcpp的改写 引言 which 函数的介绍 which函数的一些小例子 1 2 which函数的改进以及时间对比 引言 首先来介绍一下R语言which函数的作用:whic ...

  8. 【C语言】函数详解(入门到进阶)

    目录 前言 一.什么是函数 二.函数的构成 三.函数的调用和声明 四.函数的参数 五.函数的递归 总结 写在后面 前言 最近帮家里的小朋友整理一些学习C语言的知识点 有整体入门基础文章--[C语言]拯 ...

  9. [C语言] scanf 函数详解多组输入法和gitee 自荐

    自荐 gitee>>> C语言学习练习: C语言学习练习 上面是我的gitee C语言仓库链接,欢迎大家来看看我写的代码.!(◦˘ ³(♡ŐωŐ♡)(给大家推荐gitee(码云)这个 ...

最新文章

  1. MyEclipse 中Access restriction 出现问题的解决
  2. Keil调试局部变量显示not in scope的问题解决
  3. HTML入门第一和第二章
  4. 应用实践 | 电商应用——一种基于强化学习的特定规则学习模型
  5. win10 mysql 主从复制_win10 使用Docker配置mysql主从复制
  6. java中有cin格式吗,C中std :: cin对象的规则是什么?
  7. WHERE和HAVING子句有什么区别?
  8. bower安装使用入门详情
  9. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用
  10. 博图注册表删除方法_【博图+仿真+授权】西门子软件安装指南及注意事项
  11. Operator学习笔记
  12. python炫彩界面_用 ESP32 制造炫彩 LED 球
  13. html弄出油画效果,使用HTML5 Canvas实现仿PS图像油画滤镜特效
  14. 人脸识别方案(一)-ocr
  15. 学习黑客必须要掌握的DOS命令全集
  16. 带你玩转区块链--以太坊基础、发币、基于智能合约实现彩票项目-第二章-第一节【以太坊篇】
  17. 【缺陷管理】9:偶尔出现的缺陷如何处理?
  18. calc配合rem自适应屏幕宽度
  19. WMTS(Web Map Tile Service)
  20. 腾讯云宝塔Linux面板的javaWeb项目的部署

热门文章

  1. linux查看ip执行的命令是什么意思,linux 查看ip、用户、时间对应执行的命令
  2. 美国的4G,韩国的技术,高通的落魄
  3. 阿里某新员工吐槽:来了两个月非常想离职,会不会被阿里拉黑?
  4. redis的5种数据类型
  5. 树在计算机中用什么来储存,计算机中的树是什么
  6. 【代码重构(Refectoring)系列教程 基本概念二】何时应该重构?如何去重构?
  7. badusb示例代码可绕过360
  8. 每日英语:Can an Ancient Chinese City Pursue Preservation Without Disney-fication?
  9. 智能客服搭建(1)——了解专业话术
  10. lldb android studio,Android Studio22-NDK-LLDB调试