本文目錄一覽:
c語言編寫的程序運行不穩定
…
問題不是C語言,是樓主的程序有問題,根據LZ的現象,多半是棧溢出,比如非法訪問、數組過大、修改字符常量…
C語言 程序能運行,但是有時運行中間會崩潰,一般因為什麼?怎麼解決?
程序設計的很重要一點就是要保證程序的穩定性,運行時崩潰就是穩定性不夠,一般比較常見的就是數據類型不符、內存泄漏等錯誤造成的。還有,C語言的穩定性上一般也是比較差的
關於c語言程序的穩定性,求大神幫忙啊
在設計程序的時候考慮各種有可能的錯誤和異常,
因為用戶並不一定會嚴格按照程序員的設定來使用程序,好比輸入數字,但用戶輸入了字母,這些都需要在程序中考慮(可以判別輸入,不合法則提示繼續輸入)。
c++引入的異常機制,來處理程序異常。c的話,要自己仔細考慮,編寫健壯、穩定的程序了。
當然,測試也很重要,寫完程序要找一些容易出錯的來測試(每一個軟件開發都有內部測試階段),然後完善代碼
C語言指針問題
1.
這裡根本就沒有賦值的語句,所以沒有複製。
(*s)(*t)(*t++==*s++) 這個條件就是沒到s的結束且沒到t的結束且*t == *s,就循環,t和s的指針都往後移。
2.
p是指針數組,就是有兩個指針
for(i=0;i2;i++) p[i]=ch[i];這個就是賦值給p指針,其中p[0] 等於ch二維數組的第0行的首地址,p[1]等於ch二維數組的第1行的首地址
for(i=0;i2;i++) //循環p指針數組
for(j=0;p[i][j]’\0′;j+=2) //間隔j+=2循環p[i]指向的數組,當i=0時就是ch二維數組的第0行,i=1時就是ch二維數組的第1行
s=10*s+p[i][j]-‘0′; //就是ch的第i行第j列減去’0′,這樣要注意,這是個字符,ASCii是0x30,’6’ – ‘0’ = 0x36-0x30 = 0x06
//所以答案是6385
3.
數組變量實際上就是地址
str是這個數組的首地址,相當於str[0]
str+1就是str[1],
strcat(p1,p2) 返回就是把p2接在p1後就成了”abcabc
strcpy(str+1,strcat(p1,p2))就是把strcat(p1,p2)的返回複製到str+1上,就是從str[1]開始
原來str[50]=”abc”;從str[1]開始就是把b及後面的覆蓋就成了aabcabc
原創文章,作者:XFJFI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/324633.html