因?yàn)橹羔槻幌裎覀兤綍r(shí)用數(shù)組那么直觀 而且隨著指針指向的不同 對(duì)應(yīng)數(shù)據(jù)也相應(yīng)改變 如果使用不當(dāng) 會(huì)出現(xiàn)連自己都不知道具體對(duì)應(yīng)什么東西 使程序跑飛 報(bào)錯(cuò) 相當(dāng)?shù)某R?jiàn) 機(jī)器硬件一般是不會(huì)損壞的只是燒進(jìn)去的程序運(yùn)行錯(cuò)誤
創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)寬城,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
C語(yǔ)言指針造成的嚴(yán)重后果舉例有:代碼無(wú)法運(yùn)行,計(jì)算機(jī)崩潰無(wú)反應(yīng)等。
比如,你不對(duì)指針賦初值,他就會(huì)指向一個(gè)不確定的地方,萬(wàn)一是關(guān)鍵進(jìn)程,系統(tǒng)地址什么的,你的機(jī)器就自然會(huì)崩潰。學(xué)習(xí) C 語(yǔ)言的指針既簡(jiǎn)單又有趣,但是C語(yǔ)言對(duì)找工作也是非常有幫助的,C語(yǔ)言也比JAVA實(shí)用性好。
C語(yǔ)言指針的特點(diǎn):
通過(guò)指針,可以簡(jiǎn)化一些 C 編程任務(wù)的執(zhí)行,還有一些任務(wù),如動(dòng)態(tài)內(nèi)存分配,沒(méi)有指針是無(wú)法執(zhí)行的。所以,想要成為一名優(yōu)秀的 C 程序員,學(xué)習(xí)指針是很有必要的。正如所知道的,每一個(gè)變量都有一個(gè)內(nèi)存位置,每一個(gè)內(nèi)存位置都定義了可使用??運(yùn)算符訪問(wèn)的地址,它表示了在內(nèi)存中的一個(gè)地址。
是的,如果這是某書上的做法,那么,我只能說(shuō)它為你們提供了一個(gè)錯(cuò)誤的榜樣。
這樣使用gets()已經(jīng)發(fā)生了溢出!這是gets()不檢查數(shù)據(jù)邊界的bug造成的。
另外,“字符串不是總是以'\0'作為串的結(jié)束符”,答案是肯定的,不然puts()函數(shù)就不能在合適的地方停下來(lái)了。這里st[15]被gets()函數(shù)賦值為'\0'。這里要說(shuō)明的是st[15],st[16]是存在而不合法的,因?yàn)樽址畬?shí)際上就等同于指針,類似st[16]是實(shí)在的地址但是是不應(yīng)該被引用的。
為什么這里溢出沒(méi)有產(chǎn)生錯(cuò)誤?可能系統(tǒng)分配內(nèi)存是以一個(gè)最小的大小整段整段的分配(這個(gè)我只是猜測(cè))。你可以試著輸入的字符串變長(zhǎng)一點(diǎn),就可以看到內(nèi)存讀寫出錯(cuò)的提示了,這就是溢出的嚴(yán)重后果!我在dos系統(tǒng)下測(cè)試字符串長(zhǎng)了直接當(dāng)機(jī)。
驗(yàn)證1:st[15]被賦值為'\0'
#include"stdio.h"
main()
{
charst[15];
printf("inputstring:");
gets(st);
puts(st);
printf("%d",st[15]);
getch();
}
驗(yàn)證2:
#include"stdio.h"
main()
{
charst[15];
printf("inputstring:");
gets(st);
puts(st);
//printf("%d",st[16]);
st[1]='\0';
printf("%s\n",st);
printf("%s",st+2);
getch();
}
同樣的建議:拒絕gets(),這本來(lái)就是一個(gè)有bug的函數(shù)!
本文標(biāo)題:c語(yǔ)言指針調(diào)用函數(shù)危險(xiǎn)嗎 c語(yǔ)言通過(guò)指針調(diào)用函數(shù)
網(wǎng)站網(wǎng)址:http://chinadenli.net/article38/dogcgpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、用戶體驗(yàn)、電子商務(wù)、虛擬主機(jī)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)