添物不花錢學計算機及編程(預備篇)
C語言介紹
C語言基本是每個編程人員必學的一面語言,很好掌握,是理解編程的關鍵。很多編程語言基於其編寫或者基於此語言的衍生品編寫。
C語言是人機交互的一個基礎語言之一,雖然是之一,單一般其實就是唯一。
偶爾用彙編
其他非C的我沒見過,理論上是存在的。沒有C之前大家用的,有了C之後估計就少了。
有了計算機操作基礎,可以學習編程了,推薦從C語言開始學習,使用這本書進行學習《C程序設計語言》,此書是C語言的作者編寫就知道是多麼的權威了,同時此書有英文版本《C程序設計語言(英文版)》,建議都買了學習,畢竟作為計算機學生,英文不好是不行的,很多國外的先進的東西都是英文的。另外也有一遍習題解答,也同時買了。裡面的題目都做一遍,編程水平不會差。如果想繼續提高C語言的水平,可以看看其他相關圖書,比如《C指針》等一堆。
參考圖書:C語言的圖書比較多,一般國外的都是精品,國內的基本就算了。一本書很難學好,多讀些圖書吧。下面也只是冰山一角。還有很多就不一一列舉。基本噹噹四星以上的都可以買了看看。
參考視頻學習網站:
1 玩轉 C語言 基礎課堂
2 C語言/C++學習指南 (語法篇) 入門到精通(打算開發Windows看看,Linux的參考)。
3 C語言也能開發網站(高級課程,而且比較高級,長個見識看看)。
4 計算機專業的課程體系,裡面有個C語言程序設計。
參考資料:
1 http://www.cprogramming.com/里有個c-tutorial。
2 高質量C++/C編程指南 林銳 博士
學的更好點的,可以參考github上的C項目代碼看看。比較出名的推薦幾個:
1 https://github.com/antirez/redis
2 https://github.com/nginx/nginx
可以上網搜索GCC: The Complete Reference等內容查看學習。
上面的內容,如果都學好了,基本算入門,您可以自己學習了,師父領進門,修行靠個人了。
C語言的靈魂-指針
指針
一個變數存放一個變數的地址(A point is a variable that contains the address of a variable)
指針的指針
指針函數
函數指針
很難學,但是希望你學好!
很難學,但是希望你學好!
很難學,但是希望你學好!
如何檢驗學習效果?
神一樣的指針:
int *p;
一個指向整型數據的指針。
int **p;
一個指針的指針,它指向的指針指向一個整型數據。**p 是 int 類型,所以 *p 是int *類型,即*p是一個指向int的指針,所以p是一個指向int的指針的指針。
int *p[10];
一個有10個指針的數組,該指針指向整型數據。p[10] 的類型是 int *,所以 用type 替換 int *,也就是 type p[10],即p中每個元素都是type類型。
int (*p)[10];
一個指向有十個整型數據數組的指針。()是為了當一個整體看待,所以用val替換(*p),上式變為int val[10],所以*p 相當於數組名(即數組的首地址),所以p是一個指向數組(該數組包含10個Int數字)的指針。
int * p(int);
就一個函數(不是函數指針),該函數有一個整型參數,返回值為一個指向整型的指針
int (*p[10])(int);
一個有十個指針的數組,該數組中的指針指向一個函數,該函數有一個整型參數並返回一個整型數。根據p[10]是一個函數指針,所以p中每個元素都是一個函數指針。
int (*p)(int);
定義了一個參數為int,返回值為int的函數指針,函數指針名是p。如果初始化了 p , 則可以通過 p( int ) 調用函數。
代碼流程
整個流程要清楚
編碼
編譯
執行
打包
安裝
另外就是看開源項目源碼,是否能夠完全看懂並修改。
比如Nginx,Redis等
在我們課程系列的操作系統有個GeekOS實驗,也可以檢驗。
GeekOS是不錯的檢驗項目,強烈推薦在校學生仔細研究學習。
這個項目我在讀碩士時候做過,2周時間,只能看到項目2,一共7個,都做下來就很了不起了,可以做一個學期,慢慢做。裡面有部分彙編代碼,彙編也學下。
工作中的實際使用情況
基本不用!
用到的基本是著名的,比如Nginx,Redis等。
自己修改代碼的情況不多
基本是C++或者Java,或其他
不過也有很多公司需要根據自身的情況調整某些開源項目代碼的,所以可以看看開源代碼,或者說認真學習研究一個。在這類公司也有需求。
如果你是嵌入式等行業的就例外了。
總結
好好學,值得你好好學和你的付出。
個人覺得大學生怎麼花功夫在此語言上都不為過。
考研用/軟考用/很多高級語言的基礎/…...
只是為了工作的例外,你可以只學Java,Js等當簡單的碼農。
掌握了這個,理解其他的都容易些。
致敬:
C語言作者之一Dennis M.Ritchie(丹尼斯·里奇)
推薦閱讀:
※超級計算機如何實現大規模人腦模擬?演算法姿勢正確很重要
※軟考系統集成項目管理工程師第一章重點知識總結
※近幾年人工智慧的進步算大嗎?
※機械鍵盤使用技巧教程?
※蘋果電腦上的那種香味是來源於何處?