一.memset()函數簡介
我們先來看一下cplusplus.com - The C++ Resources Network網站上memset()函數的基本信息:
1.函數功能
memset()函數的功能是:將一塊內存空間的每個字節都設置為指定的值。
這個函數通常用于初始化一個內存空間,或者清空一個內存空間。
2.函數參數
該函數一共有 3 個參數,分別是:
void *memset(void *s, int c, size_t n);
1>.void * s
第一個參數的類型是void*(無類型指針),
它指向要填充的內存塊的指針,
它的作用是告訴函數要填充的一塊空間的起點在哪.
2>.int c
第二個參數的類型是int(整形),
它是要填充的值,通常是一個無符號字符,
它的作用是告訴函數這塊空間要填充成哪個值.
要注意的是,這個值雖然是以int型傳遞的,但在填充時函數會先將該值轉換成無符號char型再填充內存.圖示如下:
3>.size_t n
第三個參數的類型是size_t(無符號整形),
它表示要填充的字節數,
它的作用是告訴函數一共需要將多少個字節的空間設置成要填充的值.
3.函數返回值
函數的返回值類型是void*(無類型指針),它的作用是在函數運行結束后返回這塊空間的起始地址.
4.函數頭文件
該函數包含在頭文件<string.h>中.
二.memset()函數的具體使用
?memset()函數的使用場景是:當我們想初始化一個內存空間,或者清空一個內存空間時,我們可以使用memset()函數來實現這一訴求.
1.使用memset()函數完成初始化數組
如下,我們使用memset()函數將一個數組全部初始化為0, ??????????????????????????? :
分別給memset()函數傳入:arr(即數組地址),0(即將數組全初始化為0),sizeof(arr)(即數組的大小).
#include <stdio.h>
#include <string.h>int main()
{int arr[10];memset(arr, 0, sizeof(arr)); // 將數組全部初始化為0for(int i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}
在vs編譯器中運行查看結果:
可見memcpy()函數成功的將arr數組全部初始化為0了.
2.使用memset()函數完成結構體清空
關于memset()函數在結構體中的運用,大家可以移步我的另一篇博客,里面有詳細的memset()函數在通訊錄程序項目中的運用,對這部分感興趣的朋友話可以點下面這個鏈接:
【C語言實戰項目】通訊錄C語言實戰項目之通訊錄程序詳解https://blog.csdn.net/weixin_72357342/article/details/132265734?spm=1001.2014.3001.5502
文章內容示例:
以上就是memset()函數的詳解,希望能對您有幫助.