C语言中memset函数详解(很清晰易懂)
功 能: 将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函数详解(很清晰易懂)相关推荐
- C语言中memset函数详解
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void * ...
- C语言中string函数详解
linux kernel code : kernel/lib/string.c strsep,strtok,strchr ,strstr ...... PS:本文包含了大部分strings函数的说明 ...
- C语言中get_put函数详解,C语言第五课之getchar函数和putchar函数
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 getchar函数也就是键盘输入函数,这个函数和scanf函数不一样!getchar函数没有scanf函数灵活.下面就给大家介绍下getchar函数的介绍 ...
- C语言中scanf函数详解
scanf函数 上一节中我们讨论了,如何将整数,浮点数,字符串打印到屏幕上去.既然有输出,怎么能没有输入呢?这一节中,我们来介绍与printf相反的scanf函数. scanf的功能是将键盘输 ...
- c语言中strtok函数详解,手把手教你自主实现字符串切割函数,内附详细代码。
函数功能简介: 对字符串str进行切割,切割的标志为字符指针q指向的这两个字符 "# *":. 但是在对这个函数进行调用时,只有在第一次调用时,才会将str这个字符串的首地址传递过 ...
- c语言函数time用法,c语言中time函数详解
总结: time_t time(time_t *timer); 返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到此刻的本地时间所经过的秒数,time_t实际是个long长整型 ...
- C语言中get_put函数详解,C++ get()和put()读写文件详解
在某些特殊的场景中,我们可能需要逐个读取文件中存储的字符,或者逐个将字符存储到文件中.这种情况下,就可以调用 get() 和 put() 成员方法实现. C++ ostream::put()成员方法 ...
- java 函数fun_c语言中fun用法详解_后端开发
Java Dao层的作用_后端开发 Dao层叫数据访问层,属于一种比较底层,比较基础的操作,可以具体到对于某个表或某个实体的增删改查,其Dao层的作用是对数据库的访问进行封装,从而不涉及业务,实现解耦 ...
- c语言中funx的作用,c语言中fun用法详解
C语言中fun用法详解 fun函数是自定义的C/C++语言函数,函数功能多样.该函数名为"函数"英文function的简写,一般在示例和试题中使用,通常在主函数中被调用. C/C+ ...
最新文章
- NeurIPS2019:新人与Bengio等大佬面对面交流,还颁发三项论文奖
- 【SSH网上商城项目实战17】购物车基本功能的实现
- Windows 11,一个新功能,一场新屠杀!
- python多线程队列爬虫流程图_python 多线程爬虫 队列queue问题。
- linux添加windows网络打印机,Linux Mint如何添加windows分享的网络打印机?
- 计算机网络发展第二阶段 兴起于,计算机辅助开始于计算机发展第几阶段
- 远控免杀专题6---Venom免杀
- IBM软件服务创新运用 提升市民生活质量
- 知识图谱能否拯救NLP的未来?
- Vjudge 2016-5-10 math test
- java 静态扫描_静态代码扫描工具 – (八)- 扫描Java项目
- python自学行吗-python自学行吗 新手可以自学python吗
- 关于安装NTKO Office插件的方法
- js去掉字符串的空格
- 数字孪生智慧选煤厂:数据监控赋能矿山高效生产
- 如何选择白盒测试工具
- Linux键盘驱动详解 转
- vue实现输入六位密码支付页面
- doris 动态分区
- vue循环jq渲染网页页面
热门文章
- 大数据开发到底要学哪些内容!加米谷告诉你
- python lxml安装失败,Python pip安装lxml出错的问题解决办法
- 中学计算机课 打字教案,计算机课教案.doc
- 上市公司净利润增长率的计算
- 【Python从零开始】caffe2的安装过程(在win10+Python+VS2015的环境下,改成caffe2的安装)(2)
- [工具] 护眼宝 – 傻瓜版屏幕蓝光过滤应用[Win/Android]
- java服务容器_Java容器和Docker这种服务容器差别?
- 学习笔记—网页设计基础知识(一)
- Leetcode-111 二叉树的最小深度(递归)
- openal MinGW 编译