memset函数

目录

一、memset函数定义

二、 memset函数代码描述

三、代码测试[2]

四、参考文献 


一、memset函数定义

 void *memset(void *s, int ch, size_t n);
1、返回类型 void *表示任何类型的指针都可以传入memset中[1]。
2、参数void *表示任何类型的指针。
3、size_t表示sizeof()函数的返回类型,表示无符号整数。
 

二、 memset函数代码描述

void * memset(void *s, int ch, size_t n) {
    unsigned char *su = s;
    for (size_t i = 0; i < n; ++i) {
        su[i] = (unsigned char)ch;
    }
}

2.1、将int类型转换为unsigned char类型的内存描述
比如int类型占用四个字节,数字2在内存中按字节存储形式[2]。

 图1 int类型内存中字节存储形式

unsigned char类型占用一个字节,数字0在内存中按字节存储形式。

 图2 unsigned char类型内存中字节存储形式 

备注:

1.为什么采用unsigned char ?

        因为unsigned char是char类型中内存最小单位(1字节)。

2.采用unsigned char * 是否更改数组类型?
        memset函数是将内存空间内的每一个字节都设置为指定值,不更改原来数组的类型,它只是对字节进行逐一设置值。
3.只能对int数组初始化为0和-1[3-4]


 

int类型由数字2更改为数字0后,字节储存形式。

 图3 int类型更改后内存中字节存储形式  

三、代码测试[2]

#include <stdio.h>
#include <string.h>
 
int main()
{
    int arr[10];
    memset(arr, 0, sizeof(arr)); // 将数组全部初始化为0
    for(int i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

四、参考文献 

[1].void 指针 void* 到底什么意思?_void*是什么意思-CSDN博客 
[2].【C语言】memset()函数详解(内存块初始化函数)-CSDN博客
[3].memset的用法详解-CSDN博客
[4].memset 简介_qt memset-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值