必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-11-04 17:45:46来源:IT技术作者:seo实验室小编阅读:84次「手机版」
 

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);

文章最后发布于: 2018-07-18 13:10:43

相关阅读

日常办公软件使用手记——total commander

1、下载新版total commander 百度搜索,进入官网https://www.ghisler.com/index.htm 点击链接想要下载9.22a版本,但是一直下载失败。

浏览器中的前进和后退代码window.history.go(-1),histo

history.go(),history.back(),//后退一页history.forward()//前进一页window.history.go(-1);//后退一页window.history.go(-n);//

AirTight C-65 系统启动日志

AirTight C-65 系统启动..U-Boot 1.1.4--LSDK-10.2.85 (Sep  3 2014 - 16:45:27)EAP1018A1-FLF-FW - Scorpion 1.0DRAM:  128 M

Home Assistant初学者指南 -4 之 如何在Home Assistan

Lovelace是Home Assistant的新成员。允许自定义用户界面的外观和可用性。在本文中,我将向您展示如何在Home Assistant上设置和配置

连尚网络B2B2C商城上线,商派助其打造核心竞争力

随着电子商务的发展,不再只是简单的和线下原有渠道做冲突,更多的是需要和原有渠道做融合。在这样的背景下,2018年11月19日,连尚网络携

分享到:

栏目导航

推荐阅读

热门阅读