天天看点

C语言--memset()概述举例

概述

memset是计算机中C语言初始化函数(一般位于string.h头文件中)。作用是将某一块内存中的内容全部设置为指定的值(以byte为单位), 这个函数通常为新申请的内存做初始化工作。

void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.
备注:ch实际范围应该在0~~255,因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节。
           

举例

#include<stdio.h>
int main(void) {
    int data[10];
    memset(data,1,sizeof(data));
    for(int i = 0; i < 10; i++){
      printf("%d\t",data[i]);  
    }
    return 0;
}
           
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009

解释:1对应0x01,0x01010101 = 16843009

#include<stdio.h>
int main(void) {
    int data[10];
    memset(data,60000,sizeof(data));
    for(int i = 0; i < 10; i++){
      printf("%d\t",data[i]);  
    }
    return 0;
}
           
1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864

解释:60000对应0xEA60,0x60606060 = 1616928864

#include<stdio.h>
int main(void) {
    int data[10];
    memset(data,-1,sizeof(data));
    for(int i = 0; i < 10; i++){
      printf("%d\t",data[i]);  
    }
    return 0;
}
           
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1

 解释:-1对应0xFF,0xFFFFFFFF = -1