第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

怎樣理解“strcat在使用時(shí)s1與s2指的內(nèi)存空間不能重疊”

怎樣理解“strcat在使用時(shí)s1與s2指的內(nèi)存空間不能重疊”

C
小霧3378873 2016-06-15 13:50:26
查看完整描述

3 回答

已采納
?
super_mb

TA貢獻(xiàn)101條經(jīng)驗(yàn) 獲得超107個(gè)贊

我覺得strcat函數(shù)的功能應(yīng)該是這樣實(shí)現(xiàn)的:

while(*s1) ?//讀到s1的結(jié)尾

{

????????s1++;

}

while(*s1++ = *s2++) ?//將s2拼接到s1后面

{

????????NULL;

}

照上面的代碼來看,如果s1和s2內(nèi)存空間是重疊的,那么s2和s1的結(jié)尾肯定是一樣的,則當(dāng)你把s2的每一個(gè)字符加到s1后,s2本身最后也會(huì)加上這個(gè)字符,于是第二個(gè)循環(huán)會(huì)一直循環(huán)下去。?所以規(guī)定不能重疊吧。

查看完整回答
4 反對(duì) 回復(fù) 2016-06-15
  • 小霧3378873
    小霧3378873
    *s1什么意思, *s1++=*s2++更不看不懂了 能解釋下么
  • super_mb
    super_mb
    這里的s1和s2都是strcat函數(shù)里面定義的局部變量,各自指向第一個(gè)和第二個(gè)字符串。s1是個(gè)指針,則*s1是取其每一位的字符的值,循環(huán)里面一直往下讀,直到最后為'\0'退出循環(huán),這時(shí)候s1指向第一個(gè)字符串結(jié)尾,第二個(gè)就是將第二個(gè)字符串的每一位賦給第一位的結(jié)尾,賦值完后,s1和s2都++,即指向下一個(gè)字符,而while判斷的是s2所指向的當(dāng)前字符。所以當(dāng)把s2的結(jié)束符賦到第一個(gè)字符串的最后,這時(shí)候再判斷,while('\0')就跳出循環(huán)了。
  • 小霧3378873
    小霧3378873
    非常感謝
?
慕村2869945

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊

strcat


查看完整回答
反對(duì) 回復(fù) 2017-03-03
  • 3 回答
  • 0 關(guān)注
  • 2295 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)