功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,

  块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作

  用 法: void *memset(void *s, char ch, unsigned n);

  程序例:

  #include <string.h>

  #include <stdio.h>

  #include <memory.h>

  int main(void)

  {

  char buffer[] = "Hello world/n";

  printf("Buffer before memset: %s/n", buffer);

  memset(buffer, '*', strlen(buffer) );// //数组直接首地址传进去。 主要是对数组指针的修改!!因为可以被修改而const char int等这些不能被修改 和malloc 配套使用

  printf("Buffer after memset: %s/n", buffer);

  return 0;

  }

  输出结果:

  Buffer before memset: Hello world

  Buffer after memset: ***********

memset函数详细说明

  1。void *memset(void *s,int c,size_t n)

  总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

  2。例子

  main(){

  char *s="Golden Global View";

  clrscr();

  memset(s,'G',6);//貌似这里有点问题//

  printf("%s",s);

  getchar();

  return 0;

  } 

  【这个问题相当大,程序根本就运行不下去了,你这里的S志向的是一段只读的内存,而你memset又试图修改它,所以运行时要出错,修改办法char *s修改为char s[]】

  3。memset() 函数常用于内存空间初始化。如:

  char str[100];

  memset(str,0,100);

  4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘memset(a, '/0', sizeof(a));

  memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。

  strcpy就只能拷贝字符串了,它遇到'/0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。

  5.补充:某人的一点心得

  memset可以方便的清空一个结构类型的变量或数组。

  如:

  struct sample_struct

  {

  char csName[16];

  int iSeq;

  int iType;

  };

  对于变量

  struct sample_strcut stTest;

  一般情况下,清空stTest的方法:

  stTest.csName[0]='/0';

  stTest.iSeq=0;

  stTest.iType=0;

  用memset就非常方便:

  memset(&stTest,0,sizeof(struct sample_struct));

  如果是数组:

  struct sample_struct TEST[10];

  则

  memset(TEST,0,sizeof(struct sample_struct)*10);

C语言中memset函数详解(很清晰易懂)相关推荐

  1. C语言中memset函数详解

    功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void * ...

  2. C语言中string函数详解

    linux kernel code :  kernel/lib/string.c strsep,strtok,strchr ,strstr ...... PS:本文包含了大部分strings函数的说明 ...

  3. C语言中get_put函数详解,C语言第五课之getchar函数和putchar函数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 getchar函数也就是键盘输入函数,这个函数和scanf函数不一样!getchar函数没有scanf函数灵活.下面就给大家介绍下getchar函数的介绍 ...

  4. C语言中scanf函数详解

    scanf函数   上一节中我们讨论了,如何将整数,浮点数,字符串打印到屏幕上去.既然有输出,怎么能没有输入呢?这一节中,我们来介绍与printf相反的scanf函数.   scanf的功能是将键盘输 ...

  5. c语言中strtok函数详解,手把手教你自主实现字符串切割函数,内附详细代码。

    函数功能简介: 对字符串str进行切割,切割的标志为字符指针q指向的这两个字符 "# *":. 但是在对这个函数进行调用时,只有在第一次调用时,才会将str这个字符串的首地址传递过 ...

  6. c语言函数time用法,c语言中time函数详解

    总结: time_t time(time_t *timer); 返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到此刻的本地时间所经过的秒数,time_t实际是个long长整型 ...

  7. C语言中get_put函数详解,C++ get()和put()读写文件详解

    在某些特殊的场景中,我们可能需要逐个读取文件中存储的字符,或者逐个将字符存储到文件中.这种情况下,就可以调用 get() 和 put() 成员方法实现. C++ ostream::put()成员方法 ...

  8. java 函数fun_c语言中fun用法详解_后端开发

    Java Dao层的作用_后端开发 Dao层叫数据访问层,属于一种比较底层,比较基础的操作,可以具体到对于某个表或某个实体的增删改查,其Dao层的作用是对数据库的访问进行封装,从而不涉及业务,实现解耦 ...

  9. c语言中funx的作用,c语言中fun用法详解

    C语言中fun用法详解 fun函数是自定义的C/C++语言函数,函数功能多样.该函数名为"函数"英文function的简写,一般在示例和试题中使用,通常在主函数中被调用. C/C+ ...

最新文章

  1. NeurIPS2019:新人与Bengio等大佬面对面交流,还颁发三项论文奖
  2. 【SSH网上商城项目实战17】购物车基本功能的实现
  3. Windows 11,一个新功能,一场新屠杀!
  4. python多线程队列爬虫流程图_python 多线程爬虫 队列queue问题。
  5. linux添加windows网络打印机,Linux Mint如何添加windows分享的网络打印机?
  6. 计算机网络发展第二阶段 兴起于,计算机辅助开始于计算机发展第几阶段
  7. 远控免杀专题6---Venom免杀
  8. IBM软件服务创新运用 提升市民生活质量
  9. 知识图谱能否拯救NLP的未来?
  10. Vjudge 2016-5-10 math test
  11. java 静态扫描_静态代码扫描工具 – (八)- 扫描Java项目
  12. python自学行吗-python自学行吗 新手可以自学python吗
  13. 关于安装NTKO Office插件的方法
  14. js去掉字符串的空格
  15. 数字孪生智慧选煤厂:数据监控赋能矿山高效生产
  16. 如何选择白盒测试工具
  17. Linux键盘驱动详解 转
  18. vue实现输入六位密码支付页面
  19. doris 动态分区
  20. vue循环jq渲染网页页面

热门文章

  1. 大数据开发到底要学哪些内容!加米谷告诉你
  2. python lxml安装失败,Python pip安装lxml出错的问题解决办法
  3. 中学计算机课 打字教案,计算机课教案.doc
  4. 上市公司净利润增长率的计算
  5. 【Python从零开始】caffe2的安装过程(在win10+Python+VS2015的环境下,改成caffe2的安装)(2)
  6. [工具] 护眼宝 – 傻瓜版屏幕蓝光过滤应用[Win/Android]
  7. java服务容器_Java容器和Docker这种服务容器差别?
  8. 学习笔记—网页设计基础知识(一)
  9. Leetcode-111 二叉树的最小深度(递归)
  10. openal MinGW 编译