tft每日頭條

 > 圖文

 > c語言應該怎麼學習

c語言應該怎麼學習

圖文 更新时间:2024-11-19 10:39:36

c語言應該怎麼學習?如何學習c語言,在學習C語言的時候一定要掌握什麼知識?在這裡我給大家寫出了一點點小計劃,不喜勿噴,謝謝,我來為大家科普一下關于c語言應該怎麼學習?以下内容希望對你有幫助!

c語言應該怎麼學習(你知道怎樣學習C語言嗎)1

c語言應該怎麼學習

如何學習c語言,在學習C語言的時候一定要掌握什麼知識?在這裡我給大家寫出了一點點小計劃,不喜勿噴,謝謝!

一、要學習的書

《C Primer Plus》、《C缺陷和陷阱》、《C和指針》、《C專家編程》。

二、知識點學習1.字符串

1、 strlen()函數的返回值是什麼類型的?

2、 字符串strlen() 的值,是否和他占據的内存空間相同?

3、 你是否知道Strcpy 函數存在的潛在風險?如何避免?

4、 如果一個字符串沒有字符串結束符,而調用str 開頭的庫克,會發生什麼?

5、 Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()内部到底是如何運行的?這些函數到底對源字符串和目标字符串做了些什麼?你是否觀察過它們運行時兩個字符串内存的變化?

6、 上面這些函數使用時,各有哪些需要注意的地方?

7、 你會幾種字符串查找操作?

8、 c語言中有字符串這個數據類型嗎?

9、 對字符串進行操作的時候,是否為字符串結尾符預留存儲位置?不然的話容易造成非常訪問内存。

2.數組

1、 你肯定知道,定義“int a[10]; ”, a[10] 這個元素是無效的。

2、 你知道幾種數組初始化的方法?

3、 數組和指針有千絲萬縷的聯系而又不同,你是否對他們在不同情況下的使用進行過詳細的總結?

4、 “int calendar[10][20]; ”,這是一個什麼樣的數組?它擁有 10 數組類型的元素,還是 20 個?

5、 “int a[10]; ”,數組名 a 在本質上是一個什麼?你是否打印過 a 的值?

6、 你知道幾種獲取數組某元素的方法?

7、 指針和數組相同嗎?什麼時候相同?什麼時候不同?

8、 用指針和下标訪問數組元素,那種方式更快?

3.結構體

1、 你知道什麼是位域結構體嗎?如何定義它?如何使用它?

2、 你知道字節對齊對結構體占用内存空間大小的影響嗎?如何計算結構體占用内存的大小?

4.宏

1、 你知道宏的本質是什麼嗎?函數?語句?類型定義?或者其他?

2、 你知道語言設計者為什麼設計宏大嗎?這些原因目前是否仍然成立?

3、 你會設計帶有參數的宏嗎?

4、 你知道使用宏的參數的時候的注意事項嗎?

5、 你會設計帶有可變參數的宏嗎?

6、 你知道使用宏有什麼劣勢嗎?

7、 你有沒有更好的替代方案?

5.枚舉

1、 是否可以指定枚舉中各項的值?

2、 如果不指定值,枚舉的第一個值是多少?

3、 枚舉的值是否可以是負數?

4、 定義枚舉的時候,你是否專門定義了枚舉的最小值和最大值?

6.switch

1、 switch(c)中的 c 的數據類型有哪些?

2、 你是否在所有的switch 中都加了 default 語句?

3、 是否在所有的case 中都加了 break 語句(一般情況的做法)?如果你不加 break ,将會發生什麼?

7.static

1、 static的三個主要作用是什麼?

2、 static的修飾的局部變量是保存在什麼地方的?全局變量哪 ?

3、 static修飾的全局變量和函數,在其他的文件中是否可以訪問?如何訪問?

4、 你知道static 是 c 語言中是實現封裝和隐藏的利器嗎?你是否經常使用?

5、 定義在不同源文件中的static 全局變量,編譯器是否允許他們的變量名稱相同?他們在内存中的地址是否相同?函數那?

8.const

1、 你是否經常使用const 來表明不能夠被更改的變量?

2、 你是否經常使用const 常量來代替宏?

3、 下面四種情況,你知道是各自表示什麼意思嗎?

int i_value= 10;

const int* pvalue = & i_value

int const *pvalue = & i_value

int* const pvalue=& i_value

const int* const pvalue =& i_value

4、 你知道const 常量如何初始化嗎?

9.sizeof

1、 對于字符數組,strlen 和 sizeof 的值是否相同?

2、 S izeof本質上是函數還是宏?

3、 S izeof的返回值是什麼類型?

10.指針

1、 “int *p; ” &p , p , *p 他們的值分别表示什麼含義?

2、 你定義的指針初始化了沒?

3、 你理解指針的指針的概念嗎?你會使用嗎?

4、 “int *pi_value; pi_value = 0x100000; ” pi_value 1 的值是是多少?

5、 你會定義函數指針嗎?

6、 你會使用函數指針調用函數嗎?

7、 關于指針和數組,請參見知識點數組。

11.動态分配内存

1、 動态分配的内存是保存在什麼地方的?

2、 什麼情況下使用動态分配内存?

3、 動态申請内存一定要釋放,否則會内存洩露。你是否使用過内存檢測工具?

12.函數

1、 如何查看函數在内存中的地址?

2、 如何給一個函數指針賦值?

3、 你是否會定義可變入參函數

4、 你是否可以區分函數的形參與實參?

5、 如何定義函數名,以準确的表達函數的用途?

6、 你是否使用const 來修飾函數入參和返回值,以表的特定的含義?

7、 遞歸如何使用?

13.變量

1、 全局變量,局部變量,常量分别保存在内存中的什麼地方?

2、 不同類型的變量,你是否知道其作用域?

3、 全局變量和局部變量是否可以重名?你是否在這樣做?

4、 局部變量在函數退出後是否有效,為什麼?

5、 全局變量為什麼不允許定義在頭文件中?有何危害?

14.連接(Linux)

1、 鍊接位于編譯過程的那個階段?

2、 動态鍊接庫和靜态鍊接庫使用時有何區别?

3、 如何 對 動态鍊接庫 進行 動态加載 (不用重啟程序而加載鍊接庫)?

4、 動态鍊接有何優點?

5、 動态鍊接庫中是否定義了非static 的全局變量?你是否知道這是一個非常危險的動作?

6、 動态庫中的全局變量(非static )和函數(非 static )是否可以和上層全局變量和函數重名?重名後會發生什麼事情?

15.運行時的數據結構(Linux)

1、 你知道什麼是段的概念嗎?

2、 可執行程序可以分為幾個段?每個段保存的是什麼内容?

3、 如何查看可執行程序各個段的大小?

4、 當函數被調用時發生了什麼?

5、 你有沒有試過程序的棧空間最大有多大?程序超過此大小會發生什麼?

6、 你使用的系統的棧是向下生長的,還是向上生長的?

16.include

1、 如何避免對同一頭文件的多次include ?

17.聲明

1、 什麼是 聲明 ,什麼是定義?

2、 你是否會運用c 語言聲明的優先級規則?

18.關于 複雜度 :

1、 軟件的首要技術使命 是 管理複雜度。

2、 優秀程序員的 一個特質 是将複雜的事情簡單化,而非将簡單的問題複雜化。所以,他們一般會選擇簡單的解決方案。

3、 極盡機巧,複雜的解決方案,除了将新手搞得暈頭轉向之外,别無他用。

4、 閱讀優秀程序員的代碼,是一種享受,你很少遇到思維的阻力,你可以盡情的享受簡單之美。

這些是C/C 能做的

服務器開發工程師、人工智能、雲計算工程師、信息安全(黑客反黑客)、大數據 、數據平台、嵌入式工程師、流媒體服務器、數據控解、圖像處理、音頻視頻開發工程師、遊戲服務器、分布式系統、遊戲輔助等。

對于熱愛編程的人來說,有一群一起學習一起解答的小夥伴很重要!如果你想更好的提升你的編程核心能力(内功)不妨從現在開始!

編程學習書籍分享:

編程學習視頻分享:

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved