c語言最難
① 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語言有地方最難學啊
這要看學習者是抱著什麼樣的態度去學的,對於一個愛好者來說學什麼都好辦,對於一個不愛好的人來說即使用最簡單的給他學,他也會覺得很難的。
就我個人的學習,我覺得指針那兒比較難,因為那塊兒的東西可以跟數組還有其他的如:文件操作那兒進行聯系。還有就是嵌套的循環語句,if 語句了等等幾個甚至十幾幾十個嵌套之後給解讀程序帶來不便。
我相信只要經過一段時間專研一定能順利通過那些難點的學習。
④ C語言最難學的是什麼
嗯,很佩服lz的自學能力。
譚浩強的c語言的書,很權威,很詳細,很適合自學的。
學習c語言很重要的一點就是學習理論知識與上機訓練結合起來。學完一章後就按課本後面的習題上機練練。這樣穩扎穩打的學起來很好了。又win—tc軟體配合上機訓練不錯。
指針是學習者公認的最難學的。還有指向指針的指針。後面還有結構體和鏈表,裡面都有用到指針的知識。如果指針學得後,那在以後的設計里會相當實用方便。
⑤ C語言中最難的是什麼求解
數據結構和演算法
堆
棧
隊列
二叉樹
樹
等
前提是先學好單鏈表
學會這些
你的C
算學到家了
指針是基礎中的基礎
不是難點
⑥ c++語言最難學的是什麼
作為一個用了3年多C/C++的程序狗,我來說兩句。
說到C++的難點,其實很多地方是一言難盡的。我不敢聲稱我精通C++,我甚至覺著八成的人都不能這么說。甚至我可以確定,在我工作的過程中我肯定是沒有用過C++所有的語言特性,甚至有些語言特性到現在看來我都覺著是天書。
C++的坑太多了,簡單說幾點:
指針並不能簡單算做是C++的痛點,這個特性繼承自C,它帶來的問題很多:當你的程序莫名崩潰,你就要好好考慮下,是不是出了野指針,或者你的程序有MemoryLeak?這個對新手來說簡直是地獄,如果再混下多線程,OMG,誰能告訴我這個對象的生命周期到底應該如何管理。也許你需要make_shared,但是你要知道,半自動的內存管理要用好也是要花功夫的,而且仍然不能杜絕問題的產生。
跨平台。也許有人跟你說過 C++跨平台,一份代碼在不同的平台上都能找到編譯器來編譯。這句話本身沒錯,問題在於,有沒有人告訴過你,不同的編譯器對C++標准支持是不一樣的?C++的跨平台在我看來就是宏預處理堆砌出來的跨平台。這個對java或者C#的程序員來說,會崩潰的。你見沒見過有語言上來就重新定義自己的int,long類型的?你去看大型的C++項目,尤其是有年頭或者有歷史沿襲的,基本都這么干過。為什麼?因為早些年大家沒啥好辦法,為了讓自己的程序在不同平台上的表現盡量一致,只能自己把基本類型重定義一遍。
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,還是開源的。對於一個語言來說,標准庫如此的不統一,實在是令人頭大。
C++11 這個可以拿來所說的,總體來說不算缺點。C++11對於C++來說試一次很徹底的進化。解決了很多問題,引入了lambda,新的右值引用,新的智能指針等等。當時為什麼要列在這里呢?學習成本啊 親。我們就說引用,以前我們有普通的值引用,常量引用,現在我們多了一個右值引用。沒錯,現在右值也可以有引用了。什麼,你不清楚引用,常量,左值和右值的概念?正常,在沒有右值引用之前,我就沒在意過左值和右值的區別。現在不一樣了啊,扔給你個std::move std::forword 為了會用,你還要滾回去把左值和右值白扯清楚。
看到有人說類,補充一個。我覺著C++的類模型設計上是有問題的。而且多繼承現在的普遍觀點是這是個缺點大過優點的特性。單繼承+受限類的多繼承目前比較有市場。可以看看Java8,它就是這么乾的。還有就是支持重載必須顯式聲明為virtual,而且子類中是看不出基類中是否有virtual聲明的。這個是個有點扯淡的要求。因為在一個龐大的繼承樹中,你可能需要跟蹤到繼承樹的根節點才能知道到底是不是virtual的。個人理解可以由編譯器自行推斷,但是現有的標准並沒有這么做,不知道是為了兼容還是覺著這么做會帶來問題。我們來看一下常用的關於類的C++語言特性:多繼承,虛函數,構造函數,析構函數,拷貝構造函數,運算符重載,公有繼承私有繼承保護繼承,友元函數友元類,靜態成員。這是我能想到的,C++類的復雜度絕對是超過java和C#的。就一個多繼承時多級父類的構造和析構過程就夠新手撓頭一陣的。
大概上是這樣,這個是我說理解的C++存在的問題。如果你去知乎上搜,可以找到更多。比如ABI介面兼容問題,跨dll的內存釋放問題,自動構造析構導致你根本無法精確控制內存,不去做專門了解,你都不知道編譯器產生過幾個臨時對象,它們又在何時產生了析構。
對C的兼容,對多種編程範式的支持,新語法的不斷加入,不同編譯器標準的支持力度,平台相關性帶來的跨平台問題等等困擾著C++。它仍然是一門好語言,但並不完美,它不對你的使用做出任何的假定和限制,所以如果你濫用這些過於靈活和強大的特性,程序肯定會崩給你看的。
以上。
⑦ c語言是最難的語言么
V語言不是最難的編程語言。編程語言分為機器語言,匯編語言,高級語言,編程一般需要接觸到匯編和高級語言,匯編語言是最難的部分。高級語言同樣按照不同的應用方向,有c c++,java,python等等,他們之間的難度劃分因應用而異。所以不能簡單的說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語言中最靈活的是指針,最難學的也是指針。
不過,只有多多練習,也不難學。
上機實踐特別重要,編程語言指在書面上寫程序是永遠也學不好的!!
通過實踐,就可以深刻的理解書本中的道理!!