當前位置:首頁 » 編程語言 » c語言的危險
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的危險

發布時間: 2022-12-19 01:01:09

c語言的優缺點有哪些

C語言的優點有三個:
代碼量小。
運行速度快。
功能強大。
任何語言有優點就有缺點。C語言的缺點可以用下面三點來概括:
危險性高。
開發周期長。
可移植性不如JAVA。

❷ C語言問題,未給指針變數指定初始值真的有危險嗎

初學者最好養成給指針變數賦初值的習慣
至於原因嘛,就是上述文段:如果你不給它賦初值開始他就會亂指,當你對它操作時極有可能改動到他指向的內容,要是他指向已經被使用的地址,悲劇很可能就發生了;
當然了,如果你每次在使用到指針變數前都注意到它的指向,是可以避免出錯的,但很多時候難免會大意,就好比掉了分號一樣,任何人都知道是錯的,但很多時候就是發生了
學習計算機編程,就是這樣,有時候會因為一點點的疏忽而導致程序運行出錯,甚至直接不能運行,所以建議養成良好的習慣

❸ c語言為什麼有函數危險一說啊 比如gets()的溢出操作等;

是的,如果這是某書上的做法,那麼,我只能說它為你們提供了一個錯誤的榜樣。
這樣使用gets()已經發生了溢出!這是gets()不檢查數據邊界的bug造成的。
另外,「字元串不是總是以'\0'作為串的結束符」,答案是肯定的,不然puts()函數就不能在合適的地方停下來了。這里st[15]被gets()函數賦值為'\0'。這里要說明的是st[15],st[16]是存在而不合法的,因為字元串實際上就等同於指針,類似st[16]是實在的地址但是是不應該被引用的。
為什麼這里溢出沒有產生錯誤?可能系統分配內存是以一個最小的大小整段整段的分配(這個我只是猜測)。你可以試著輸入的字元串變長一點,就可以看到內存讀寫出錯的提示了,這就是溢出的嚴重後果!我在dos系統下測試字元串長了直接當機。
驗證1:st[15]被賦值為'\0'
#include"stdio.h"
main()
{
charst[15];
printf("inputstring:");
gets(st);
puts(st);
printf("%d",st[15]);
getch();
}
驗證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(),這本來就是一個有bug的函數!

❹ c語言危險的組合,請問這表達式是怎麼來的

這實際上是數學問題,而不是C語言問題
1. n個盒子排成一行,如果把第一個盒子拿掉,剩下的n-1個盒子裡面滿足條件,有cnt(n-1)種,第一個盒子無所謂是什麼盒子,因此上面的這種情況 2*cnt(n-1) 種。
2. n個盒子排成一行,如果把第一個盒子拿掉,剩下的n-1個盒子不滿足條件,那麼只有當前三個盒子是鈾,第四個盒子是鉛才可以。(註:第四個盒子如果是鈾,那麼234盒子就滿足條件了)。

pow(2, n-4)是n-4盒子的所有情況,減去cnt(n-4)後n-4盒子滿足條件的(因為本部分討論的是「如果把第一個盒子拿掉,剩下的n-1個盒子不滿足條件」)。得到第二種情況的數目是pow(2,n-4)-cnt(n-4)

然後加到一起就可以了

❺ c語言 整數相除有什麼危險應如何避免這種危險

整數相除會降低精度,會丟失小數部分.

可以在整數相除之前先做強制類型轉換,以避免這種危險

❻ C語言過時了嗎

一句話,數落C的都是門外漢。

首先,C幾乎是所有面向對象機器語言的基礎,這么說的原因是有其他系列的語言,但是主體編程語言的基本思想,基本語法是很接近的,學好了C就等於給自己打下一份地基,學其他高級語言的時候經常會覺得似曾相識,很容易觸類旁通。

其次,誰說C不是高級語言,而且並也不能說C不夠現代,具體什麼叫高級語言,我就不廢話了,再給你舉個例子吧,現在絕大多數人用的WINDOWS操作系統以及華麗著稱的MAC系統還有專業人士才主要接觸的LINUX系統都是C的傑作,呵呵,你說C過時嗎?

然後,C的主要用途不是窗口程序,而是更接近於硬體的程序或者操作,如果你要寫底層應用,比如硬體的驅動程序,比如你要直接讀寫內存,比如你要寫操作系統^_^,這才是C的看家本領,這也是為什麼幾乎所有靠C吃飯的人都要繼續學匯編的原因。

最後,幫你下個結論吧,如果只是自己玩玩,C見識一下,看看語法跟設計思路,讀點例子開闊一下眼界,轉到C++和JAVA寫點看得見莫得著的東西,會很有成就感。如果打算以後走計算機這條路,C一定要學,要真正理解它。然後再根據自己的需要,選JAVA或者C++什麼的。如果你以後可能會去搞工業編程,C要嚼爛。

教材推薦 譚浩強 《C程序設計》 綠皮的,很多人的入門書,包括我 ^_^

明白了?呵呵,加油學吧,希望下一次再見到你的問題,帶著C的實例 ^_^