linux 的memset函数是什么,memset函数详细说明

linux 的memset函数是什么,memset函数详细说明memset 函数详细说明 1 void memset void s intc size tn 总的作用 将已开辟内存空间 s 的首 n 个字节的值设为值 c 2 例子 include includemain char s GoldenGlobal clrscr memset s G 6 printf s s getchar return0 3

memset函数详细说明

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

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

2。例子

#i nclude

#i nclude

main(){

char *s=”Golden Global View”;

clrscr();

memset(s,G,6);

printf(“%s”,s);

getchar();

return 0;

}

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

char str[100];

memset(str,0,100);

4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];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);

6。strcpy

原型:extern char *strcpy(char *dest,char *src);

用法:#i nclude

功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

memcpy

原型:extern void *memcpy(void *dest, void *src, unsigned int count);

用法:#i nclude

功能:由src所指内存区域复制count个字节到dest所指内存区域。

说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

memset

原型:extern void *memset(void *buffer, int c, int count);

用法:#i nclude

功能:把buffer所指内存区域的前count个字节设置成字符c。

说明:返回指向buffer的指针。

MEMSET

概述

作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。

函数原型

#include

void *memset(void *buffer,  int c, unsigned int count);

详细描述

将已开辟内存空间 buffer 的首 count 个字节的值设为值 c.

memset()函数有如下两点值得注意: ?memset函数是以字节为单位进行赋值的. ?memset可以方便的清空一个结构类型的变量或数组。 如: {
{
{ struct sample_struct { char name[16]; int age; int score; }; }}}

对于变量

{
{
{ struct sample_strcut stTest; }}} 一般情况下,清空stTest的方法:

stTest.name[0] = ”;

stTest.age = 0;

stTest.score = 0; 用memset就非常方便:

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

}}} 如果是数组:

{
{
{ struct sample_struct TEST[10]; }}} 则

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

返回值

返回指向buffer的指针。

用法示例

切换行号显示

1 #include 2 #include 3 int main(void)

4 {

5     char *buffer = “Golden Global View”;

6     memset(buffer, ‘G’, 6);

7     printf(“%s\n”, buffer);

8     return 0;

9 }

上例中先将指针buffer指向字符串”Golden Global View”,然后将buffer 的首 6 个字节的值设为值 ‘G’,最后输出buffer指向的字符串, 故输出结果应为”GGGGGG Global View”。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228666.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:29
下一篇 2026年3月16日 下午6:29


相关推荐

  • 请描述django模板中标签的作用?_html object标签

    请描述django模板中标签的作用?_html object标签常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

    2022年7月30日
    9
  • 基于Opencv快速实现人脸识别(完整版)

    基于Opencv快速实现人脸识别(完整版)上篇博客:https://blog.csdn.net/beyond9305/article/details/92844258严格来说标题是有误的,只是单纯地对人脸进行了检测,而并非识别,opencv内置了检测分类器和识别器,这二者还是有很大不同的。这次进一步地研究这一块的知识,来一波真正意义上的人脸识别,查询的资料可能有点过时,但基本思想是没有毛病的,对一些函数也进行了更新,保证了功能的正常实…

    2022年6月7日
    38
  • 无键盘屏幕配置树莓派连接WiFi

    无键盘屏幕配置树莓派连接WiFi前言Ubuntu20.04LTS都发布好一段时间了,官方支持RaspberryPi,手痒痒了想试试,结果发现没带miniHDMI的转接线,看了下Ubuntu官方的树莓派安装文档:https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview可以直接在TF卡根目录下面创建配置文件来实现WiFi连接的.记录一下实操过程Ubuntu20.04LTS系统镜像写入TF卡习惯了先手动下载系统镜像:

    2022年6月13日
    28
  • SpringBoot集成Quartz动态定时任务「建议收藏」

    SpringBoot自带schedule沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务注意在程序启动的时候加上@EnableScheduling@Scheduled(cron="0/5****?")publicvoidjob(){System.out.println("每五秒执行一次");}…

    2022年4月17日
    50
  • WebStorm使用 webstorm快捷键

    WebStorm使用 webstorm快捷键WebStormWebStorm是JetBrains推出的一款商业的 JavaScript 开发工具任何一个编辑器都需要保存(ctrl+s),这是所有win平台上编辑类软件的特点,但是webstorm编辑文件右上角是没有那个熟悉的*的。好处:省去了ctrl+s之后,在结合Firefox的vim,基本不动鼠标就可以看到结果页面了。 坏处:没有以前的*

    2022年6月23日
    40
  • goland2021.2激活破解3月最新在线激活

    goland2021.2激活破解3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号