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

c語言最難的是什麼

發布時間: 2023-02-02 13:24:06

c語言最難學的是什麼

嗯,很佩服lz的自學能力。
譚浩強的c語言的書,很權威,很詳細,很適合自學的。
學習c語言很重要的一點就是學習理論知識與上機訓練結合起來。學完一章後就按課本後面的習題上機練練。這樣穩扎穩打的學起來很好了。又win—tc軟體配合上機訓練不錯。
指針是學習者公認的最難學的。還有指向指針的指針。後面還有結構體和鏈表,裡面都有用到指針的知識。如果指針學得後,那在以後的設計里會相當實用方便。

Ⅱ c語言的難點

多維數組,鏈表,堆棧,函數參數傳遞(指針、結構)。

Ⅲ c語言的難點在哪裡

難的是設計。能把別人的設計思路弄通了,就沒什麼難度了。指針不是難點,難的是看懂別人的設計思路,能讀懂別人的變數定義以及變數的用處。指針稍微精通C語言的人都不會很糾結指針,看懂指針和精通運用指針是兩個概念。

Ⅳ C語言最難學的是哪一部分最精髓的又是哪一部分呢

最難學的是數組,函數, 函數參數
函數和函數參數是最精髓的! 一定要學好
指針不算太難,認真點就行

Ⅳ c++語言最難學的是什麼

作為一個用了3年多C/C++的程序狗,我來說兩句。


說到C++的難點,其實很多地方是一言難盡的。我不敢聲稱我精通C++,我甚至覺著八成的人都不能這么說。甚至我可以確定,在我工作的過程中我肯定是沒有用過C++所有的語言特性,甚至有些語言特性到現在看來我都覺著是天書。


C++的坑太多了,簡單說幾點:

  1. 指針並不能簡單算做是C++的痛點,這個特性繼承自C,它帶來的問題很多:當你的程序莫名崩潰,你就要好好考慮下,是不是出了野指針,或者你的程序有MemoryLeak?這個對新手來說簡直是地獄,如果再混下多線程,OMG,誰能告訴我這個對象的生命周期到底應該如何管理。也許你需要make_shared,但是你要知道,半自動的內存管理要用好也是要花功夫的,而且仍然不能杜絕問題的產生。

  2. 跨平台。也許有人跟你說過 C++跨平台,一份代碼在不同的平台上都能找到編譯器來編譯。這句話本身沒錯,問題在於,有沒有人告訴過你,不同的編譯器對C++標准支持是不一樣的?C++的跨平台在我看來就是宏預處理堆砌出來的跨平台。這個對Java或者C#的程序員來說,會崩潰的。你見沒見過有語言上來就重新定義自己的int,long類型的?你去看大型的C++項目,尤其是有年頭或者有歷史沿襲的,基本都這么干過。為什麼?因為早些年大家沒啥好辦法,為了讓自己的程序在不同平台上的表現盡量一致,只能自己把基本類型重定義一遍。

  3. stl,說到這個一臉淚。stl好用嗎?很好用。stl好學嗎?一點也不好學。它的學習成本太高了,而且代碼晦澀。C++的模板庫基本都是一個德行。如果你發現你看不懂你常用的std::vector<>里的代碼,很正常,這種模板的語法習慣起來需要時間。很多人詬病stl太大,內存釋放效率低,不同平台實現不一致等等問題。關於這個不一致的問題,我們來說一下:windows平台vc自己實現了stl。linux上gnu實現了gnu stl。android平台早些年用stlport,據說是個經典的實現版本,後來換用了gnu的實現。mac上蘋果的clang用的是不是自己實現的還是直接用了gcc的不太清楚,沒有用過水果的產品做開發。那麼stl在C++上處於一種什麼地位?它就是C++的標准模板庫啊?用過java和C#的都知道,標准庫是個什麼地位。離了它們不出活啊。也許我們可以重新寫一個?ok,在java,C#上你是看不到的,但苦逼的C++眾不少人這么干過,或者早些年在stl功能簡陋的時候曾經這么干過。EA就專門針對游戲開發寫過一個EASTL,還是開源的。對於一個語言來說,標准庫如此的不統一,實在是令人頭大。

  4. C++11 這個可以拿來所說的,總體來說不算缺點。C++11對於C++來說試一次很徹底的進化。解決了很多問題,引入了lambda,新的右值引用,新的智能指針等等。當時為什麼要列在這里呢?學習成本啊 親。我們就說引用,以前我們有普通的值引用,常量引用,現在我們多了一個右值引用。沒錯,現在右值也可以有引用了。什麼,你不清楚引用,常量,左值和右值的概念?正常,在沒有右值引用之前,我就沒在意過左值和右值的區別。現在不一樣了啊,扔給你個std::move std::forword 為了會用,你還要滾回去把左值和右值白扯清楚。

  5. 看到有人說類,補充一個。我覺著C++的類模型設計上是有問題的。而且多繼承現在的普遍觀點是這是個缺點大過優點的特性。單繼承+受限類的多繼承目前比較有市場。可以看看Java8,它就是這么乾的。還有就是支持重載必須顯式聲明為virtual,而且子類中是看不出基類中是否有virtual聲明的。這個是個有點扯淡的要求。因為在一個龐大的繼承樹中,你可能需要跟蹤到繼承樹的根節點才能知道到底是不是virtual的。個人理解可以由編譯器自行推斷,但是現有的標准並沒有這么做,不知道是為了兼容還是覺著這么做會帶來問題。我們來看一下常用的關於類的C++語言特性:多繼承,虛函數,構造函數,析構函數,拷貝構造函數,運算符重載,公有繼承私有繼承保護繼承,友元函數友元類,靜態成員。這是我能想到的,C++類的復雜度絕對是超過java和C#的。就一個多繼承時多級父類的構造和析構過程就夠新手撓頭一陣的。


大概上是這樣,這個是我說理解的C++存在的問題。如果你去知乎上搜,可以找到更多。比如ABI介面兼容問題,跨dll的內存釋放問題,自動構造析構導致你根本無法精確控制內存,不去做專門了解,你都不知道編譯器產生過幾個臨時對象,它們又在何時產生了析構。


對C的兼容,對多種編程範式的支持,新語法的不斷加入,不同編譯器標準的支持力度,平台相關性帶來的跨平台問題等等困擾著C++。它仍然是一門好語言,但並不完美,它不對你的使用做出任何的假定和限制,所以如果你濫用這些過於靈活和強大的特性,程序肯定會崩給你看的。


以上。

Ⅵ c語言最難在什麼地方

c語言最難在它缺乏邏輯性--形式邏輯不成立。
例如:
char
str[]="abcdef";
//聲明
str
是字元串,初始化成
"abcdef"。
可是,一樣是賦值,寫在語句里:
str[]="abcdef";

str="abcef";
卻都是錯的。而要調用函數:
strcpy(str,"abcdef");
才行。
例如:
int
a=4;
int
*b=&a;
//
聲明
b
是指針,讓它指向a。
printf("%d",
*b);
//
列印
b
的值。
如果語句里寫:
*b=&a;//

是錯的,你瞧,外形同聲明裡一樣,卻
是錯的。
語句里要寫:
b=&a;
//
你瞧,b
前面沒*號
才正確。
你要是寫:
b=a;
//
對不起,又錯了。
例如,聲明了:
int
a;
int
*b
語句里
可以

a,
可以

&a,
可以

b,
卻不可以

&b
形式。
語句里
可以

b,
可以

*b,
可以

a,
卻不可以

*a
形式。
所謂C語言指針難,難在
形式邏輯不成立。
而我們經驗中的
數學,卻是
邏輯性很強,形式邏輯成立。
初學者,最難理解就是
「形式邏輯不成立」這點。

Ⅶ c語言程序設計難點在哪裡

C語言是一種表達力很強的語言,而且與其他語言相比顯得比較精煉高效。在C語言中的語法部分,比較難的是指針,由於它很靈活,用好的話能大大提高效率,反之則容易出錯(一般是內存空間指向出錯,如指針空懸、內存泄露等),但是當你練多了,指針應該也不成問題(要有意識的去練),我覺得真正的難點在於演算法邏輯。理論上,C語言只要求你時刻知道自己在干什麼,要實現什麼功能,只要你的程序邏輯明晰,一般不用再DEBUG,一次就能成功,反之,如果自己都感覺模糊,那程序只會比你還模糊:-D,要極好的人品才能勉強運行成功,但出不出正確結果還不一定。解決的方法很簡單,就是練。每成功寫出一個程序,都會讓自己有所進步,積累多了,就能在編程之前在大腦里構建出清晰的藍圖,編程自然不在話下。祝你在通往程序員的道路上一路狂奔,呵呵

Ⅷ 學C語言最難的 是什麼

c語言中最靈活的是指針,最難學的也是指針。
不過,只有多多練習,也不難學。
上機實踐特別重要,編程語言指在書面上寫程序是永遠也學不好的!!
通過實踐,就可以深刻的理解書本中的道理!!

Ⅸ c語言裡面最難的是不是指針啊,乍學啊

指針是C語言裡面最靈活最有用的當然也是最難的。你不要希望一下子就完全明白,慢慢來,多讀讀程序,自己動動手去嘗試指針的操作。這樣循序漸進,你對指針的理解才會越來越透徹,最後到C語言裡面根本沒指針這種境界就差不多了。樓主,記住「溫故而知新」這句話,一定要反復地重溫,這樣你對指針的理解才能加深。

Ⅹ c語言中最難得是什麼

指針,特別是指向指針的指針和指向函數的指針