前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >memset库函数「建议收藏」

memset库函数「建议收藏」

作者头像
全栈程序员站长
发布2022-09-20 13:29:27
1.7K0
发布2022-09-20 13:29:27
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

头文件:#include <string.h>

定义函数:void * memset(void *s, int c, size_t n);

函数说明:memset()会将参数s 所指的内存区域前n 个字节以参数c 填入,然后返回指向s 的指针。在编写程序时,若需要将某一数组作初始化,memset()会相当方便。

返回值:返回指向s 的指针。

附加说明:参数 c 虽声明为int,但必须是unsigned char,所以范围在0 到255 之间。

常用内存空间的初始化。

1、初始化字符数组(常用)

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main(void)
{
    char s[5];
    memset(s,'A',sizeof(s));
    s[5]='#include <stdio.h> #include <string.h> int main(void) { char s[5]; memset(s,'A',sizeof(s)); s[5]='\0'; puts(s); return 0; }';
    puts(s);
    return 0;
}
memset库函数「建议收藏」
memset库函数「建议收藏」

2、初始化数组(注意:初始化为0正确实现,其他初始值还是通过循环语句实现)

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main(void)
{
    int i,array1[5],array2[5];
    memset(array1,0,sizeof(array1));
    for(i=0; i<5; ++i)
        printf("%d ",array1[i]);
 
    printf("\n");
 
    memset(array2,1,sizeof(array2));
    for(i=0; i<5; ++i)
        printf("%d ",array2[i]);
    return 0;
}
memset库函数「建议收藏」
memset库函数「建议收藏」

通过库函数memset()来对一个数组进行初始化,需要了解一下该函数的工作原理。库函数memset()是针对字节操作的,其中第二个参数值被赋给第一个参数指向的内存地址开始的每一个字节,因此,这种初始化其实存在局限性,也导致其主要用于清除数组内容等。比如:假设i=0,1,2,…

memset(a,0,sizeof(a)); // 此时a[i]=0x00000000

memset(a,-1,sizeof(a)); // 此时a[i]=0xffffffff

memset(a,0x0f,sizeof(a)); // 此时a[i]=0x0f0f0f0f=252645135

由于500=0x1f4,400=0x190,因此,如果使用

memset(a,0x190,sizeof(a)); // 此时a[i]=0x90909090

所以,初始化过程还是建议使用循环语句来做。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档