国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

字符串復(fù)制strcpy()實(shí)現(xiàn)及常見(jiàn)問(wèn)題

2019-11-06 06:34:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原型:char* strcpy(char* des , const char* src),des 和 src 所指內(nèi)存區(qū)域不可以重疊且 des 必須有足夠的空間來(lái)容納 src 的字符串。

實(shí)現(xiàn):

char *strcpy(char *des, const char *src){	assert( (NULL!= des) && (NULL != src) );	char * address = des;	while( (* des ++ = * src ++)  != '/0' ) 		;	return address;}常見(jiàn)問(wèn)題:

1、為什么返回char*?

答:為了實(shí)現(xiàn)鏈?zhǔn)奖磉_(dá)式(就是一連串寫下來(lái)的意思。。。)。例如:

int len = strlen ( strcpy ( des, "hello") );如果返回類型為void,那就要這樣寫:

char des[10];strcpy( des, "hello" );int len = strlen( des );不如鏈?zhǔn)奖磉_(dá)式精簡(jiǎn)。

2、NULL == des 為什么將常量寫在表達(dá)式的左邊?

答:如果手誤將表達(dá)式錯(cuò)寫成了賦值,則馬上報(bào)錯(cuò);如果將表達(dá)式寫成des != NULL,漏寫了一個(gè)!,變成了des = NULL,則檢查不出錯(cuò)誤來(lái),可能會(huì)出現(xiàn)意想不到的錯(cuò)誤。

3、為什么參數(shù)要加const 限定符?

答:如果參數(shù)是指針,且僅作輸入用,則應(yīng)在類型前加const,以防止該指針在函數(shù)體內(nèi)被意外修改。

4、關(guān)于 =  * 和 right++ 這三個(gè)操作符的優(yōu)先級(jí):

* 和 right ++ 的優(yōu)先級(jí)都是2級(jí),是對(duì)等的,其次是 = ,由于 right++ 的特點(diǎn)是:滯后使用,造成會(huì)先賦值,再指針 ++。

所以 *des ++ = * src ++可以拆分成:

*des = *src;des ++;src ++;


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉义县| 郧西县| 沁阳市| 靖宇县| 方正县| 中西区| 朝阳区| 辽宁省| 上杭县| 伊宁市| 白河县| 乡城县| 苗栗县| 公安县| 巨野县| 宣威市| 丹东市| 兴业县| 民丰县| 长丰县| 织金县| 那坡县| 丰城市| 绩溪县| 馆陶县| 六盘水市| 上思县| 海南省| 武功县| 桐梓县| 曲松县| 牟定县| 高陵县| 米林县| 天柱县| 宁陵县| 锦州市| 淄博市| 白朗县| 边坝县| 台北县|