memset函数的初步使用

函数原型为:void *memset(void *s, int ch, size_t n)
意思是将s在内存中的前n个字节填充ch;
着重理解:
1.ch可以是字符数据,整型数据,浮点型数据,十六进制、八进 制数据等数据。但不管那种数据,都是将其转化为二进制数后取最后八位填充到s的字节中去,当不足八位时,用0在前面补齐
例如:0xf转换为二进制位1111,不足八位,在前面用0补齐为00001111,等价于0x0f;
2.C中负数的二进制数都是用补码(补码为原码除符号位外,全部取反再+1)形式存储的,例如:-1的二进制数为1111111111111111(16个1,其中首尾表示符号(有符号数据));
-1的原码为1000000000000001取反后是1111111111111110,再+1即1111111111111111

#include <iostream>
#include <stdio.h>
using namespace std;
int main() 
{
    //一个字节占8个位
    //一个16进制数占4个位
    //两个16进制数占一个字节

    //对字符型赋值,一个字符一个字节
    char str[10];
    //memset(str, ch, sizeof(str));当ch为十进制数时,对str中每个元素str[i]的字节都赋值为ch的二进制数的最后八位
    memset(str,0x31, sizeof(str));//'1'对应16进制数为0x31,二进制数为00110001,因此填充后str[i]二进制值为00110001//等价于memset(str, '1', sizeof(str));
    for (int i = 0; i < 10; i++)
        cout << str[i] << endl;

    //对int型赋值,一个int型数据占num=sizeof(int)个字节
    int a[10];
    memset(a, 0x3f, sizeof(a));//0x3f的二进制位00111111,将00111111填充到每个字节中即a[i]二进制为00111111 00111111 00111111 00111111(4个字节)
    for (int i = 0; i < 10; i++)
        cout << a[i] << endl;
    return 0;
}

输出如下:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值