計算機專業,學C語言難不難啊
很多人道聽途說,以為C語言很難,C語言其實只是一門語言,也是人們開發的一種面向過程的計算機編程語言。C語言還是非常基礎的,而且應用很廣泛,比如一些應用軟件、系統軟件、圖像處理、數字計算、游戲軟件開發等,以及嵌入式軟件開發,比如含有處理器的電子產品等。
作為計算機專業的學生,C語言的基礎一定要打好,計算機專業的側重點就是計算機編程,C語言作為專業基礎課的重要課程,若C語言學不好,其它語言也好不到哪去,畢竟編程語言都有很多相似的地方。
經驗分享作為過來人告訴你,其實C語言并不是很難,不過對于剛接觸C語言的人來說,會感覺很難,而且無法理解學的這些是什么玩意,而且編程語言讓人感覺很“虛”,跟教學也有一定的關系,因為老師一上來就跟你內容、講語法,懵懵懂懂完全不知道講的是什么,慢慢地就會對C語言失去了興趣,上課要么逃課、要么打瞌睡、要么玩手機,根本沒注意聽課,課后就拋開一邊玩游戲,這樣肯定會覺得越來越難,因為你根本沒怎么學!而且據我對身邊同學的了解來看,稍微認真學的人到后面期末考試以及C語言二級證書考試成績都挺不錯的(頭條@技術閑聊)。成績差的那些都是剛開始覺得C語言有點難度之后就放任自己,不是逃課就是打瞌睡、玩手機等,課余時間要么天天玩游戲,要么偶爾打打球,跟本沒把學習放心上,這樣怎么可能學得好!就像小時候剛學自行車的時候,感覺也很難啊!根本控制不住平衡,上去就摔!多練練就學會了。
學習C語言最好多敲代碼練習,手中的電腦不要光顧著玩游戲、看電視劇,該學習時還得抽些時間學習。C語言的語法、數據類型、運算符、表達式、常用語句等都是比較基礎的內容,C語言的重難點在指針和數組這一章,對初學者來說還是有一定難度的,一定要多看、多練、多思考。
總結:C語言學習并不難,只要用心學,很容易掌握它!覺得難的,你們真的努力了么?不聽課、不復習,也不實踐練習怎么可能學的好呢?大學里的課程教學都是很基礎的內容,工作中的工程應用編程比課本的知識要難得多!
感謝閱讀!如果覺得還可以別忘了點個贊哦!若還有什么不明白的地方請評論區下方留言,若想了解更多相關知識,請關注本頭條號,會持續更新內容,謝謝支持!C語言結構體的size,為什么不等于它的所有成員size之和
謝邀。
結構體在C語言程序開發中,是不可或缺的語法。不過,相信不少C語言初學者遇到過這樣的問題:為什么結構體的size有時不等于它的所有成員的size之和呢?
C語言結構體大小等于它的所有成員大小之和嗎?
舉例來說,假設有結構體,它的C語言代碼如下,請看:
我們繼續編寫C語言代碼,依次輸出成員s,i,c占用內存空間的大小,相關代碼很簡單,請看:
編譯并執行這段C語言代碼,得到如下輸出:
那么按理說,結構體x占用的內存空間應該等于2+4+1=7字節,但是似乎實際結果與我們的預期并不一致:
上面這行C語言代碼輸出的結果是12!這是怎么回事呢?
解析程序輸出的結果與我們的預期不一致,原因在于“對齊機制”。如果將結構體x看作是一個容器,鑒于成員s,i,c的長度參差不齊,C語言編譯器不得不“填充”一些額外的空間,以滿足“對齊機制”。
數據結構是否對齊不僅影響C語言程序的性能,有時甚至還會帶來意想不到的錯誤,例如訪問未對齊的數據,可能會導致硬件方面的問題(SIGBUS,總線錯誤),導致性能下架,以及破壞一些操作的原子性等并發安全保障。
所以,C語言編譯器在處理結構體時,如果沒有特別的指定,一般都會填充一些字節,以確保不違背對齊機制。以上面的結構體x為例,初學者可能會認為它的成員在內存中的布局如下:
但是,如果編譯器按照下面布局,處理器訪問之將更加方便:
不過,這樣排列結構體x的成員,會空出一些空間,對于處理器來說,小心的跳過這些空間還是有些麻煩,于是大多數C語言編譯器都會像下面這樣填充空穴:
這樣一來,整個結構體x占用內存的空間,其實就是成員i占用空間的3倍了,也即12字節。
事實上,我們可以通過排列結構體x成員的順序,來優化其占用內存的大小,例如:
小結本節主要討論了C語言中結構體大小并不一定等于它所有成員大小之和的原因,應該注意,結構對齊在C語言標準中是implementationdefined,不同的C語言編譯器可能選擇不同的數據對齊方式,從而導致不同和不兼容的數據布局。因此,在使用不同編譯器開發C語言程序時,了解編譯器是如何對齊數據是很重要的。
一些編譯器可以指定結構對齊的方式,例如#pragma語句。
大學軟件工程的學生怎么學好c語言
軟件工程專業學好c語言是挺重要的,畢竟匯編語言是很多操作,設計的基礎。怎樣學才能學好呢?
1.在老師講之前做好預習,事先看書(《c語言程序設計》相信現在很多都是用這本書),剛接觸可能很多看不明白,這時就要耐住性子看了,書里自有黃金屋,安下心看總會了解大概內容。
2.認真聽講,有時候有經驗人士的一席話,一番教誨,往往能讓人幡然醒悟,了解到其中門道,特別是入門者,被帶著入門往往比自己入門少走彎路。
3.課后可以找一下網上教學內容看,現在互聯網時代,共享資源有很多,一些c語言的教學視頻也是很值得去看的。
4.練練練,無論怎么學習,怎么看理論,沒有操作,沒有自己打代碼,永遠只會是紙上談兵,學不好c語言,所以最重要的就是要多練,自己找資源,題目來練,哪怕不會了看懂答案,之后再把答案打上去。
總而言之,個人認為無論什么科目要學好離不開下苦工,c語言也不例外。
純屬個人觀點,圖片來自百度!
為什么這么多人不喜歡譚浩強的C語言程序設計
很大一部分同學學不好C語言,把罪責歸于“譚浩強寫的書錯誤很多”這實在是很搞笑。譚浩強老先生1934年生,現在已經80歲了。他1958年從清華大學自動控制系畢業,那年24歲。要知道C語言是1972年推出的,計算機都是大型機,原始又笨重,當時譚浩強學自動化控制這一專業可以說是比較尖端的。光從這一點上,就可以說,他是同時代人里非常非常聰明的那一類人。
現在許多人批評譚浩強的《C程序設計》的一個重要理由是“不符合C99標準”。但我們要知道DennisM.Ritchie在1972年才推出C語言的第一個版本(當時譚浩強38歲),那時的C語言并不成熟。事實上C語言的第一次標準化一直到1989年才完成(俗稱C89),請注意那時候譚浩強已經55歲了!55歲,你退休了沒?而更重要的是,1989年那個時候,互聯網的發展即使是在全球來看,也是非常非常初級的,更別說國內。因此信息獲取的渠道極其狹窄。舉個例子大家就能明白,我們現在瀏覽網頁所用的萬維網協議,就是在1989年那一年,由當時在歐洲粒子物理實驗室的TimBerners-Lee和他的同事一起發明的。也就是說,一直到譚浩強55歲退休的時候,C語言才剛剛完成了第一版本的標準化,而整個世界的互聯網甚至還不支持通過瀏覽器來瀏覽!時間再往后十年,到了1999年的時候,C99標準終于問世。但因為這一標準比較新,大部分編譯器還不能支持其中的許多特性。因此大部分沿用的還是C89的特性。
在這樣的背景下,第二年,譚浩強的《C程序設計》出版了,而這一年,譚浩強已經66歲了。拋開譚浩強66歲依然寫作這一點不談,若是站在當時的背景下來看待,事實上這本書也還是可讀,可學,有價值的。但軟件行業發展飛快,現在高校若繼續沿用這一教材,就不合時宜了。譚浩強的《C程序設計》這本教材好不好?現在的觀點來看當然不好。現在想學習C語言的人,不推薦采用他的書。但這主要是因為軟件行業發展快速,他的書籍內容較老導致的。我們可以就書論書,但有些不明就里的同學從書出發指責譚浩強“不懂編程,水平低”等等,就是不對的了。
c語言中數組的總結
type為數據類型,arrayName為數組名,length為數組長度。需要注意的是:
數組長度length最好是常量表達式,例如10、20*4等,這樣在所有編譯器下都能運行通過;如果length中包含了變量,例如n、4*m等,在某些編譯器下就會報錯,我們已在《C語言變長數組(VLA)》一節專門討論了這點。
數組是一個整體,它的內存是連續的;也就是說,數組元素之間是相互挨著的,彼此之間沒有一點點縫隙。
一般情況下,數組名會轉換為數組的地址,需要使用地址的地方,直接使用數組名即可。
C語言編程到底難不難學的
專升本路過,難不難的,關鍵看你自身情況和考試規則的契合度,契合度高就不難,低就很難,上班無聊,就多碼點字給題主做個參考。
我呢,高中完全是不學無術,高考前一天還去網吧玩通宵的那種,勉強過個專科線。我喜歡玩網游,有過幾次被盜號的經歷,有一次被盜后就心想,憑什么你能偷我的,我不能偷你的?于是就有了學習編程學習黑客的想法(后來學著學著感覺編程很有意思,就忘了當初學編程的初衷,至今也沒能盜過一個賬號,這是后話不表)。
高考報志愿,本來想報計算機專業學編程,或者說是想學盜號,但遭到家人以“學電腦的都爛大街了”的理由一致反對。我父親是電工,讓我去學電。我想了想,首先,我對學計算機專業的決心并沒有那么強烈,其次,我要是學了電,以后跟著我父親,至少工作是不愁的,電工也不累,我父親還能給我找個好師父帶我,貌似也不錯,更重要的是我那剛過專科線的成績能挑的真不多,就聽家人建議學了機電一體化專業。
后來專科學校上課,上了幾堂課,對電工這些東西真心沒興趣,加上專科學校管的不嚴,就天天逃課,在宿舍里自學編程。網上請教大神還怎么自學,自己總結了一下,首先需要學習一門編程語言,我選擇了C,然后要學習數據庫,網絡知識等,需要學什么知道了,但怎么學呢?一頭霧水。
上面說了半天廢話,下面開始和專升本有關了
一天晚上吃完晚飯在宿舍和室友閑聊,有人提到了專升本,說想考一個本科。好多人都說專升本難考,能來這破學校的估計沒誰能看得上。不管難不難考,了解一下總可以吧,但專升本怎么考?沒人知道,于是打開電腦上網上查。
查完后知道了,我們省的專升本考試分為公共課和專業課,首先是兩門公共課,英語和C語言,然后是專業課,各專業不同。錄取規則是先公共課排名,過線了再用總成績去所報院校排名錄取,就是俗稱的省線和校線。
然后我們又查了查近幾年的分數線,公共課總分是300分,近幾年最高線是140,最低線是100多一點,普遍在120到130左右。
然后我又查了查計算機專業的考試內容,C語言,數據庫,網絡基礎。
我這一看,這和我想學的東西正好撞上了,正好我想學但沒個方向,何不按照這個考試的大綱和教材去學?考不考的再說。
就這樣,兩年多的時間過去了,期間也是為了練手考過了二級C,等到臨近專升本考試的時候,我找了一套往年的C語言真題做了一下,然后和答案一對,先人板板,居然答了110多分?雖然我英語很渣,高考才30多,但是往年最高分也才140,而且只看總分不看單科,而且我第一次做題就110,要是刷幾套題還不穩當130左右?再加上英語滿分150,我蒙也能蒙個30多分吧,穩當150以上,公共課完全沒問題,所以就報名了。結果就是當年我C語言單科就過線了10多分,英語也運氣好,連做帶蒙的居然有50分,總成績高出分數線60多分過線。至于專業課就更輕松了。
所以你說,專升本對我來說難嗎?真不難。但是對于對編程毫無興趣的人來說,專升本難不難?真難,C語言這TM的都是啥?
后來我了解到有的省公共課考的不是C語言,而是考數學,以我當初連期末考試都差點掛科的水平來考,那就真是難了,我覺得我不可能考的上。