加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

C语言memset函数分解

发布时间:2021-11-07 00:08:33 所属栏目:系统 来源:互联网
导读:一、memset函数原型: void memset ( void *s , char ch, unsigned n ) 函数功能:将s为首地址的一片连续的n个字节内存单元都赋值为ch 二、使用memset函数 # include stdio.h # include string.h int main() { char c[10]; // 把数组c的10个元素都赋值为a mem
一、memset函数原型:
void memset ( void *s , char ch, unsigned n )
 
函数功能:将s为首地址的一片连续的n个字节内存单元都赋值为ch
 
二、使用memset函数
# include <stdio.h>
# include <string.h>
int main() {
    char c[10];
    // 把数组c的10个元素都赋值为'a'
    memset(c, 'a', 10);
    for (int i=0; i<10; i++) {
        printf("%ct", c[i]);
    }
    return 0;
}
输出:
a a a a a a a a a a
 
# include <stdio.h>
# include <string.h>
int main()
{
    int a[10];
    memset(a, 0, 10*sizeof(int));
    /* 数组a是int类型的,一个int占4个字节,所以a[10]实际上有40个字节。
       而char类型只占1个字节,所以不需要乘sizeof(char) */
    // 输出数组a和b
    for (int i=0; i<10; i++) {
        printf("%dt", a[i]);
    }
    printf("n");
    return 0;
}
输出:
0 0 0 0 0 0 0 0 0 0
 
emset函数是对n个字节进行赋值。而char类型占1个字节。但是int类型占4个字节,所以对int、short等类型赋值时,需要乘上字节数。
 
三、给int类型赋值为1
# include <stdio.h>
# include <string.h>
int main()
{
    int a[10];
    memset(a, 1, 10*sizeof(int));
    // 输出数组a
    for (int i=0; i<10; i++) {
        printf("%dt", a[i]);
    }
    return 0;
}
输出:
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
 
输出结果可以看到,并没有给数组元素赋值为1。为什么呢?这是为什么呢?
 
前面我们说过,memset是对连续的n个字节进行赋值。但是int类型占4个字节。memset赋值时,直接将数组拆成40个字节赋值,并没有把4个字节看成一个整体

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读