| 網(wǎng)站首頁 | 關(guān)于我們 | 開發(fā)優(yōu)勢(shì) | 產(chǎn)品展示 |
| 合作企業(yè) | 新聞動(dòng)態(tài) | 聯(lián)系我們 | 電話聯(lián)系 |
文章作者:濟(jì)南軟件開發(fā) 時(shí)間:2016年09月28日
摘要:濟(jì)南軟件開發(fā)在對(duì)C語言進(jìn)行編程時(shí)候,常常需要使用memset等函數(shù)進(jìn)行數(shù)組或者結(jié)構(gòu)體的初始化,然后這是一把雙刃劍,很容易引發(fā)意想不到的bug。本文主要解析memset系列函數(shù)的使用陷阱。
1.sizeof初探
有如下的代碼:
1
int a[100],int *b=a;
試著回答一下這幾個(gè)問題:sizeof是函數(shù)嗎?sizeof a返回多少?是100還是400?sizeof b呢?
自己去測(cè)試一下,找到答案吧。
結(jié)論:sizeof不是一個(gè)函數(shù),返回值是sizef_t,表示元素所占用字節(jié)的大小。另外需要注意,它是一個(gè)無符號(hào)類型。
2.注意函數(shù)接口
有如下代碼:
1
2
int a[100];
memset(a,0,100);
這樣會(huì)將數(shù)組a的每個(gè)元素都初始化成0嗎?
3.memcpy函數(shù)的實(shí)現(xiàn)
面試中有一個(gè)經(jīng)典問題:編程實(shí)現(xiàn)memcpy函數(shù),它的函數(shù)原型如下:
1
void *memcpy(void *dest, const void *src, size_t n);
如何去實(shí)現(xiàn)它?
注意內(nèi)存重疊問題與空指針問題,n傳入負(fù)數(shù)問題。
本文不給出答案,讀者可以自己編寫然后與標(biāo)準(zhǔn)庫中的函數(shù)進(jìn)行對(duì)照。
想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。