首页 > 其他分享 >关于memset函数的详解

关于memset函数的详解

时间:2022-11-14 12:45:34浏览次数:73  
标签:初始化 函数 字符 int memset 详解 字节

一般用于数值和结构体的初始化 这里仅仅说明对数组的初始化

函数原型

void *memset(void *s, int ch, unsigned n);
作用
 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,其返回值为指向S的指针。(重点以字节为单位初始化)

该函数存在与中(c++)
因为在c/c++中一个字符占一个字节 可以猜想该函数最初设计的时候是想字符 数组进行初始化
但往后发展该函数也可以初始化非字符函数为一些特殊值 如:0,-1,0x3f3f3f3f

对函数原型的解释

1.void*s 为函数名(要初始化的函数名)
2.unsinned n
用初始化的内存数量(以字节为单位表示,对应以内存为单位初始化)
以sizeof计算该内存

  • sizeof(int ) 表示int所占的字节数
  • sizeof a 表示a这个变量所占的字节数(该处不需括号)
    例如:memset(array,0,5sizeof(int)); 表示将array这个数组的54=20个字节初始化
    3., int ch,
    该函数最先用来对字符数组初始化
    ch 一般为一个字符 并将该字符的ASCII赋给每个字节 (计算机中 字符和int相通)
    例如
#include <string.h>
  #include <stdio.h>
  #include <memory.h>memset函数memset函数
  int main(void)
  {
  char buffer[] = "Hello world\n";
  printf("Buffer before memset: %s\n", buffer);
  memset(buffer, '*', strlen(buffer) );
  printf("Buffer after memset: %s\n", buffer);
  return 0;
  }
  输出结果:
  Buffer before memset: Hello world
  Buffer after memset: **********

每个字符占一个字节 赋值也一个一个字节的符没有问题
现在对非字符数组 赋一些特殊值也可以操作

  1. 对数组数组整体赋值0
    memset(h,0,sizeof h) 对该数组的的所有的字节都赋值成0的ASCII
    内部转化:0—>ASCII-->ASCII对应的二进制-->对每个字节赋上二进制
    由于0的ASCII为0 int占4个字节 4个字节赋值成0和一个一个字节为0答案一样
  2. 对数组赋值为0x3f3f3f3f(一般在算法题中用该值表示无穷大)
    一般实现:
    memset(h,0x3f,sizeof h)

j具体描述

[文章参考 仅作学习使用 侵权还请告知删除】https://www.cnblogs.com/lebronjames/archive/2010/07/04/1770987.html)

标签:初始化,函数,字符,int,memset,详解,字节
From: https://www.cnblogs.com/swtaa/p/16888674.html

相关文章

  • 手写弹出框代码详解
    1.代码<!DOCTYPEhtml><htmllang="zh-CN"><head><metahttp-equiv="content-Type"charset="UTF-8"><metahttp-equiv="x-ua-compatible"content="IE=edge"><......
  • 2018-11-8-内置函数(2)
    主要内容一.1.locals()2.globals()3.complex4.binocthex5.abs6.divmod7.round8.pow(x,y,z=1)9.sum10.min/max11.reversed12.slice13.format14.bytes15.bytearray16.memory......
  • Python如何研究类、对象、方法、函数之间的关系
    1,从某个类或对象出发,研究其上级父类,下级子类,同级类。自身类内部的函数和变量2,上级类base,下级类subclasses方法,同级类需要先上后下。3,查看某个类和对象支持哪些变量使用di......
  • WinDBG详解进程初始化dll是如何加载的
    一:背景1.讲故事有朋友咨询个问题,他每次在调试WinDbg的时候,进程初始化断点之前都会有一些dll加载到进程中,比如下面这样:Microsoft(R)WindowsDebuggerVersion10.0.252......
  • htop使用详解
    Linuxhtop工具使用详解Linux查看CPU个数、核数、逻辑CPU个数#总核数=物理CPU个数X每颗物理CPU的核数#总逻辑CPU数=物理CPU个数X每颗物理CPU的核数X超线程......
  • qt源码解析1--事件循环原理(重写事件函数,事件过滤器等)
    首先看我上篇博客准备好环境:​​qt源码解析0--源码获取与环境准备​​现在进入主题。先说答案:事件event默认状态是不确定的,我们可以在处理函数里调用setAccept()或者ignore(......
  • python-函数基础-笔记
    函数基础目标函数的快速体验函数的基本使用函数的参数函数的返回值函数的嵌套调用在模块中定义函数01.函数的快速体验1.1快速体验所谓函数,就是把具有独立功能的代码块组......
  • 49.var声明的函数和function声明的函数谁的优先级更高
    function声明函数的优先级更高;因为function声明函数的时候,是在代码解析之前赋值给变量,此时就已经可以调用了;但是var声明的函数,要在代码运行阶段才会赋值给......
  • Sigmoid函数原型
    sigmoid函数原型对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该......
  • mysql中的found_rows() 与 row_count()函数
    1.found_rows()found_rows()用于查询同一连接下,上一条执行select查询返回的行数,包括show语句返回的行数。中间可以插入执行dml语句,返回依然是上一条select语句返回的行......