天天看點

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