pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

C語言之陷阱與缺陷詳解

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

一、前言

二、字符指針

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

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

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

1.經典錯誤①


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;
}

計算的結果是程序陷入死循環

分析:

1.棧區默認先使用高地址,再使用低地址 

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

 調試后即可發現,i與arr[9]的地址相差3字節,所以i即為實際不存在的arr[12].

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

2.經典錯誤②

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

3、小結

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

對此我們堅持以下原則

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

原則二:仔細計算邊界

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

x>=0 && x<16  要優于 x>=0 && x<=15

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

四、求值順序

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

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


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

如此避免除0錯誤。

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


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

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

問題代碼1:c+--c(我們可以根據"大嘴法"判斷為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++;
}

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

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

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

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

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

總結

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

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

相關文檔推薦

主站蜘蛛池模板: 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 展厅装修公司|企业展厅设计|展厅制作|展厅搭建—广州展厅装饰公司 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 大_小鼠elisa试剂盒-植物_人Elisa试剂盒-PCR荧光定量试剂盒-上海一研生物科技有限公司 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 湖南自考_湖南自学考试网 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 钛板_钛管_钛棒_钛盘管-无锡市盛钛科技有限公司 | LNG鹤管_内浮盘价格,上装鹤管,装车撬厂家-连云港赛威特机械 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 浙江上沪阀门有限公司| 国际金融网_每日财经新资讯网 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 证券新闻,热播美式保罗1984第二部_腾讯1080p-仁爱影院 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 一航网络-软件测评官网 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 |