【C語言】memset()函數

一.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()函數的詳解,希望能對您有幫助.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38360.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38360.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

elementui form組件出現英文提示

今天讓解決一個bug&#xff0c;是表單組件提示詞會出現英文。 問題情景如下&#xff1a; 有時會出現中文&#xff0c;有時會出現英文。 解決方法&#xff1a; 經查看&#xff0c;代碼采用的是elementui的form組件&#xff0c;在el-form-item中使用了required屬性&#xff0c;同…

html的語義化

說說對 html 語義化的理解 去掉或者丟失樣式的時候能夠讓頁面呈現出清晰的結構有利于 SEO&#xff1a;和搜索引擎建立良好溝通&#xff0c;有助于爬蟲抓取更多的有效信息&#xff1a;爬蟲依賴于標簽來確定上下文和各個關鍵字的權重&#xff1b;方便其他設備解析&#xff08;如屏…

Fiddler

基礎 Fiddler 相當于一個 “代理”,瀏覽器訪問瀏覽器頁面時&#xff0c;就會把HTTP請求先發給Fiddler&#xff0c;Fiddler 再把請求轉發給瀏覽器的服務器&#xff0c;當瀏覽器服務器返回數據時&#xff0c;Fiddler拿到返回數據&#xff0c;再把數據交給瀏覽器。 主界面 刪除…

Github上git lfs oid sha256文件無法下載的解決方案

問題&#xff1a;github上sha文件無法下載&文件超出限制 當我克隆Github上的一個庫時&#xff0c;其中有一個包的內容格式如下&#xff1a; version https://git-lfs.github.com/spec/v1 oid sha256:一堆數字和字母 size 一堆數字 這堆東西類似百度網盤的下載鏈接和密碼&a…

設計HTML5表單

HTML5基于Web Forms 2.0標準對HTML4表單進行全面升級&#xff0c;在保持簡便、易用的基礎上&#xff0c;新增了很多控件和屬性&#xff0c;從而減輕了開發人員的負擔。表單為訪問者提供了與網站進行互動的途徑&#xff0c;完整的表單一般由控件和腳本兩部分組成。 1、認識HTML…

LeetCode150道面試經典題-- 匯總區間(簡單)

1.題目 給定一個 無重復元素 的 有序 整數數組 nums 。 返回 恰好覆蓋數組中所有數字 的 最小有序 區間范圍列表 。也就是說&#xff0c;nums 的每個元素都恰好被某個區間范圍所覆蓋&#xff0c;并且不存在屬于某個范圍但不屬于 nums 的數字 x 。 列表中的每個區間范圍 [a,…

紅黑樹(RBTree)

紅黑樹 1. 紅黑樹的概念2. 紅黑樹的性質3. 紅黑樹節點的定義4. 紅黑樹的插入操作5. 紅黑樹與AVL樹的比較 1. 紅黑樹的概念 紅黑樹是一種自平衡二叉查找樹&#xff0c;是在計算機科學中用到的一種數據結構&#xff0c;典型用途是實現關聯數組。它在1972年由魯道夫貝爾發明&…

【前端二次開發框架關于關閉eslint】

前端二次開發框架關于關閉eslint 方法一方法二方法三方法四&#xff1a;以下是若想要關閉項目中的部分代碼時&#xff1a; 方法一 在vue.config.js里面進行配置&#xff1a; module.exports {lintOnSave:false,//是否開啟eslint保存檢測 ,它的有效值為 true || false || err…

會一點stm32,只后是做嵌入式Linux還是轉JAVA?

選擇嵌入式Linux還是轉向JAVA&#xff0c;取決于你的興趣、職業規劃和就業市場的需求。以下是一些考慮因素&#xff1a;興趣和擅長&#xff1a;首先&#xff0c;你應該考慮自己對嵌入式Linux和JAVA的興趣和擅長程度。如果你對嵌入式系統、硬件交互和底層編程更感興趣&#xff0…

GPT-4 如何為我編寫測試

ChatGPT — 每個人都在談論它,每個人都有自己的觀點,玩起來很有趣,但我們不是在這里玩— 我想展示一些實際用途,可以幫助您節省時間并提高效率。 我在本文中使用GPT-4 動機 我們以前都見過這樣的情況——代碼覆蓋率不斷下降的項目——部署起來越來越可怕,而且像朝鮮一樣…

基于C#UI Automation自動化測試

步驟 UI Automation 只適用于&#xff0c;標準的win32和 WPF程序 需要添加對UIAutomationClient、 UIAutomationProvider、 UIAutomationTypes的引用 代碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D…

C++11并發與多線程筆記(2)

C11并發與多線程筆記&#xff08;2&#xff09; 線程啟動、結束&#xff0c;創建線程多法、join&#xff0c;detach 1. 范例演示線程運行的開始1.1 創建一個線程&#xff1a;1.2 join1.3 datch1.4 joinable 2. 其他創建線程的方法2.1 用類 重載了函數調用運算符2.2 lambda表達式…

ubuntu 安裝 python3.9

一、 相關背景 之前在dockerfile里面一直使用的是python3.8&#xff08;忘記為什么選擇這個版本了&#xff09;&#xff0c;想用python3.9&#xff0c;因為覺得3.8有點老了&#xff0c;而且3.9一個重要的feature&#xff0c;是把list作為默認的類型&#xff0c;不需要從typing…

Redis數據結構——Redis簡單動態字符串SDS

定義 眾所周知&#xff0c;Redis是由C語言寫的。 對于字符串類型的數據存儲&#xff0c;Redis并沒有直接使用C語言中的字符串。 而是自己構建了一個結構體&#xff0c;叫做“簡單動態字符串”&#xff0c;簡稱SDS&#xff0c;比C語言中的字符串更加靈活。 SDS的結構體是這樣的…

Python-OpenCV中的圖像處理-視頻分析

Python-OpenCV中的圖像處理-視頻分析 視頻分析Meanshift算法Camshift算法光流 視頻分析 學習使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標對象: Meanshift算法 Meanshift 算法的基本原理是和很簡單的。假設我們有一堆點&#xff08;比如直方 圖反向投影得到的點&…

ASR 語音識別接口封裝和分析

這個文檔主要是介紹一下我自己封裝了 6 家廠商的短語音識別和實時流語音識別接口的一個包&#xff0c;以及對這些接口的一個對比。分別是&#xff0c;阿里&#xff0c;快商通&#xff0c;百度&#xff0c;騰訊&#xff0c;科大&#xff0c;字節。 zxmfke/asrfactory (github.c…

ubuntu 安裝 cuda

ubuntu 安裝 cuda 初環境與設備在官網找安裝方式 本篇文章將介紹ubuntu 安裝 CUDA Toolkit CUDA Toolkit 是由 NVIDIA&#xff08;英偉達&#xff09;公司開發的一個軟件工具包&#xff0c;用于支持并優化 GPU&#xff08;圖形處理器&#xff09;上的并行計算和高性能計算。它…

解析TCP/IP協議的分層模型

了解ISO模型&#xff1a;構建通信的藍圖 為了促進網絡應用的普及&#xff0c;國際標準化組織&#xff08;ISO&#xff09;引入了開放式系統互聯&#xff08;Open System Interconnect&#xff0c;OSI&#xff09;模型。這個模型包括了七個層次&#xff0c;從底層的物理連接到頂…

一、Dubbo 簡介與架構

一、Dubbo 簡介與架構 1.1 應用架構演進過程 單體應用&#xff1a;JEE、MVC分布式應用&#xff1a;SOA、微服務化 1.2 Dubbo 簡介一種分布式 RPC 框架&#xff0c;對專業知識&#xff08;序列化/反序列化、網絡、多線程、設計模式、性能優化等&#xff09;進行了更高層的抽象和…

ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加載三維地球

目錄 SceneView類的常用屬性SceneView類的常用方法vue3中使用SceneView類創建三維地球項目準備引入ArcGIS API創建Vue組件在OnMounted中調用初始化函數initArcGisMap創建Camera對象Camera的常用屬性Camera的常用方法 要在Vue 3中使用ArcGIS API for JavaScript加載和展示三維地…