日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究

發布時間:2025/3/15 c/c++ 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

👀引子

我們使用經常使用memset函數來初始化一些數據結構,常見的字符串數組、結構體、結構體數組。今天我要提出的是一個關于指針的初始化的小問題,很容易手滑寫錯了。
強調一下錯誤示例,直接用指針來memset是不對的,并不能清空指針:
void* p1 = &x;memset(p1, 0, sizeof(p1));
所以我們為了避免memset手滑導致的錯誤,經常會自己封裝一下memset函數,如“mzero(a)”宏所示,方便大家準確地使用。

使用memset函數清空指針的demo如下:
code:

#include <iostream> #include <cstring>using namespace std;//定義賦初值為0 #define mzero( a ) \ { \memset( &a, 0x00, sizeof(a)); \ }int main() {int x=10;void* pNull = NULL;cout << "NULL ptr is:" << pNull << endl;cout << "x ptr is :" << &x << endl;cout << endl;void* p1 = &x;cout << "p1 ptr is:" << p1 << endl;memset(p1, 0, sizeof(p1));cout << "memset p : " << p1 << endl;cout << endl;void* p2 = &x;cout << "p2 ptr is:" << p2 << endl;memset(&p2, 0, sizeof(p2));cout << "memset &p ptr: " << p2 << endl;cout << endl;void* p3 = &x;cout << "p3 ptr is:" << p3 << endl;mzero(p3);cout << "mzero p: " << p3 << endl; }

output:

NULL ptr is:0 x ptr is :0x7fff671fb2d4p1 ptr is:0x7fff671fb2d4 memset p : 0x7fff671fb2d4p2 ptr is:0x7fff671fb2d4 memset &p ptr: 0p3 ptr is:0x7fff671fb2d4 mzero p: 0

👃正文

其實以上問題已經轉化為memset初始化指針問題了。首先給出結論:
指針使用NULL賦值,值數據使用memset設為0。
雖然我們demo里memset方法和NULL方法從結果上看都初始化為0了,但是還是不建議使用memset來初始化指針。因為有些系統存在著“非零空指針”(某些 Honeywell-Bull 大型機使用比特模式 06000 作為 (內部的) 空指針),這時memset就不適用這種情況了。所以我們應該:
? 用空指針常量(或空指針)對指針變量初始化;
例如:int *p = NULL; int *p = 0;
? 用空指針常量(或空指針)對指針變量賦值;
例如:int i =222;int *p = &i;

👅官方文獻

追根溯源,打破沙鍋問到底。

memset

void * memset ( void * ptr, int value, size_t num );

Fill block of memory
Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).

Parameters

ptr:
Pointer to the block of memory to fill.

value:
Value to be set. The value is passed as an int, but the function fills the block of memory using the unsigned char conversion of this value.

num:
Number of bytes to be set to the value.
size_t is an unsigned integral type.

Return Value

ptr is returned.

👂旁征博引

https://www.cplusplus.com/reference/cstring/memset/
https://www.maixj.net/ict/memset-24260
http://c-faq-chn.sourceforge.net/ccfaq/node73.html

總結

以上是生活随笔為你收集整理的【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天干天天干天天操 | 日本一区二区视频在线 | 痴汉电车在线播放 | 欧洲av无码放荡人妇网站 | 催眠美妇肉奴系统 | 91中文 | a免费毛片| 久久精品一区二 | 筱田优av| 日本少妇在线观看 | 99中文字幕在线观看 | 四虎成人免费视频 | 欧美一区二区人人喊爽 | 欧美日本韩国一区二区三区 | 18视频在线观看娇喘 | 日韩无砖 | 亚洲人成电影一区二区在线 | 亚洲精品97久久中文字幕 | 色综合天天色综合 | 国模私拍一区二区三区 | 亚洲色网址 | 亚洲成熟毛多妇女av毛片 | 亚洲AV无码精品久久一区二区 | 五月婷婷俺也去 | 第九色激情 | 制服.丝袜.亚洲.中文.综合懂 | 操比网站| 中文在线免费 | 日韩在线观看视频网站 | 天堂…中文在线最新版在线 | 欧美综合精品 | 一区二区三区在线视频免费观看 | 日本黄色大片在线观看 | 欧美精品亚洲精品 | 又欲又污又肉又黄短文 | 香蕉网站在线观看 | 福利小视频在线 | 欧美美女一区二区 | 女人久久| 怡红院男人的天堂 | 永久精品网站 | 国产激情精品一区二区三区 | 日本少妇大战黑人 | 成人免费网站在线观看 | 寂寞少妇让水电工爽hd | 国内精品国产成人国产三级 | 男男play视频 | 亚洲爆爽 | 性感美女被草 | 放荡的少妇2欧美版 | 特一级黄色大片 | 好男人影视www | 人妻精油按摩bd高清中文字幕 | 欧美三日本三级少妇三级99观看视频 | 国产精品乱码久久久久 | 粗大的内捧猛烈进出视频 | 成人黄网免费观看视频 | 欧美视频一二区 | 青娱乐极品视频在线 | 第一章婶婶的性事 | 日韩欧美国产一区二区三区在线观看 | 91av在线免费观看 | 91n在线观看 | 欧美日韩亚洲精品内裤 | 日本欧美一级片 | 自拍 偷拍 欧美 | 久草最新 | 涩涩屋视频 | caopor在线 | 免费的黄色小视频 | www.猫咪av| 亚洲男人天堂影院 | 日韩第九页| 成人精品一区二区三区视频 | 中文字幕在线日亚洲9 | 日韩精品一二三四区 | 亚洲1级片 | 尹人成人 | 女人高潮特级毛片 | 成人午夜精品一区二区三区 | 久久666 | 悠悠色在线 | 无套内谢少妇高潮免费 | 欧洲亚洲成人 | 污网站在线免费看 | 成人短视频在线免费观看 | 丰满熟妇乱又伦 | 999这里有精品 | 免费视频久久久 | 亚欧洲精品视频 | 91美女视频| 国产+日韩+欧美 | 国产女主播喷水视频在线观看 | 蜜臀av无码一区二区三区 | 日韩欧美手机在线 | jizz国产视频| videos另类灌满极品另类 | 午夜色大片 | 天天舔天天射天天干 |