久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

C語言之陷阱與缺陷詳解

本片文章是對C++中陷阱與缺陷進行了詳細的分析介紹,小編覺得本片文章講解的非常詳細,需要的朋友參考下,希望能夠給你帶來幫助

一、前言

二、字符指針

結論一:復制指針并不會復制指針所指向的內容。兩個指針所指向位置相同,實際為同一個指針。

結論而:開辟兩個數(shù)組,即使兩個數(shù)組內容相同,地址也絕不相同。

三、邊界計算與不對稱邊界

1.經(jīng)典錯誤①


int main()
{
	int i = 0; int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	for (i = 0; i < 13; i++)
	{
		arr[i] = 0;
		printf("haha");
	}
	return 0;
}

計算的結果是程序陷入死循環(huán)

分析:

1.棧區(qū)默認先使用高地址,再使用低地址 

2.數(shù)組內元素隨下標增長,地址由低到高變化

 調試后即可發(fā)現(xiàn),i與arr[9]的地址相差3字節(jié),所以i即為實際不存在的arr[12].

[補充知識:ANSI c標準允許這種用法——數(shù)組中溢界元素的地址位于數(shù)組所占內存之后,這個地址可以進行賦值和比較,但是不能解引用(若是數(shù)組之前存在溢界則語法不允許)]

2.經(jīng)典錯誤②

十米長的圍欄每一米就需要一根欄桿支撐,則共需要幾根欄桿?                               11

3、小結

欄桿問題你若不假思索可能會回答為10。欄桿問題的根源正是加減一帶來的困惑

對此我們堅持以下原則

原則一:考慮最簡單的特例(如考慮20到10間有幾個數(shù),20-10還要+1嗎。不妨考慮10到10有幾個數(shù))

原則二:仔細計算邊界

而在實際編程中,一個編程技巧則可以"一言以蔽之",即不對稱邊界。

x>=0 && x<16  要優(yōu)于 x>=0 && x<=15

不對稱邊界上界-下界就是之間所包含的數(shù)。

四、求值順序

總結:c語言中只有四個運算符(&& ;|| ;?: ;,)明確規(guī)定了求值順序

&&和||先對左邊求值,只在需要時對右邊求值:


if(y!=0 && x/y>a)

如此避免除0錯誤。

特別注意,賦值操作符不保證任何求值順序,即使考慮了優(yōu)先級和結合性,也會有意想不到的錯誤


int i=0;
while(i<n)
{
    y[i]=x[i++]
}

對于以上的代碼,就不能確定y是否在i自增之前求值。

問題代碼1:c+--c(我們可以根據(jù)"大嘴法"判斷為c+(--c)),但c自增的先后不得而知)

問題代碼2:int a=(++i)+(++i)+(++i)  (同理)

問題代碼3:answer=func()-func()*func()    (我們不知道哪個func被先調用)

五、運算符&& ||和!

這三種運算符返回值都為0或1。在結果為真是返回1,結果為假是返回0。

考慮一下代碼,其功能是查詢表中一個特定元素


int i = 0;
while (i < tabsize && tab[i] != x)
{
	i++;
}

現(xiàn)分析將&&替換成&仍然能"正常工作"的原因。

原因一:只要xy的值都限制在0~1,x&&y和x&y的結果始終相同。

原因二:數(shù)組結尾之后的下一個元素,只要不改變他的值而僅僅是讀取,沒有什么大的危害

原因三:不同與&&的求值順序,&要求兩邊都要被求值

如果tabsize大小等于tab中元素的個數(shù),即使i=tabsize后還會繼續(xù)查找下去,陷入死循環(huán)

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注html5模板網(wǎng)的更多內容!

【網(wǎng)站聲明】本站部分內容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯(lián)系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 国产青青草| 欧美日韩一区二区三区四区 | 日本少妇中文字幕 | 亚洲视频在线免费观看 | 中文字幕一区在线观看 | 欧美在线视频播放 | 日韩精品网 | 国产黄色一级 | 精品亚洲一区二区三区四区五区 | 日韩黄色一级 | 成人在线精品 | 国产51自产区 | 97色在线| 91理论片午午伦夜理片久久 | 久久精品视频一区二区 | 91看片淫黄大片 | 91久久奴性调教 | 亚洲精品一区二区三区精华液 | 久久午夜视频 | 日韩欧美视频 | www.日本在线观看 | 亚洲成a人 | 精品国产91乱码一区二区三区 | 深夜福利网 | 黄色小视频在线免费观看 | 天堂网中文在线 | 91成人精品一区在线播放 | 日韩成人免费视频 | 91日韩欧美 | 欧美性猛交一区二区三区精品 | 日韩在线精品 | 日本免费一级片 | 免费的av | 综合久久久久 | 欧美日韩中文 | 欧美精品在线免费观看 | 免费av片| 一级片免费在线观看 | 欧美日韩精品 | 亚洲精品福利视频 | 免费av一区 |