C語言 memset函數及其用法


 

定義

void *memset(void *s, int c, unsigned long n);

描述

將指針變量 s 所指向的前 n 字節的內存單元用一個“整數” c 替換,注意 c 是 int 型。s 是 void* 型的指針變量,所以它可以為任何類型的數據進行初始化。

 

例子

# include <stdio.h>
# include <string.h>
int main(void)
{
    int i;  //循環變量
    char str[10];
    char *p = str;
    memset(str, 0, sizeof(str));  //只能寫sizeof(str), 不能寫sizeof(p)
    for (i=0; i<10; ++i)
    {
        printf("%d\x20", str[i]);
    }
    printf("\n");
    return 0;
}

根據memset函數的不同,輸出結果也不同,分為以下幾種情況:

memset(p, 0, sizeof(p));  //地址的大小都是4字節
0 0 0 0 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(*p));  //*p表示的是一個字符變量, 只有一字節
0 -52 -52 -52 -52 -52 -52 -52 -52 -52

memset(p, 0, sizeof(str));
0 0 0 0 0 0 0 0 0 0

memset(str, 0, sizeof(str));
0 0 0 0 0 0 0 0 0 0

memset(p, 0, 10);  //直接寫10也行, 但不專業
0 0 0 0 0 0 0 0 0 0

 

 參考:

http://c.biancheng.net/view/231.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM