當前位置:編程學習大全網 - 遊戲軟體 - C程序員怎麽學習

C程序員怎麽學習

壹、知識點學習

①字符串

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

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

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

4、如果壹個字符串沒有字符串結束符,而調用str 開頭的庫函數,會發生什麽?

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

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

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

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

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

二、數組

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

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

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

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

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

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

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

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

三、結構體

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

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

四、宏

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

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

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

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

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

6、妳知道使用宏有什麽劣勢嗎?

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

五、枚舉

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

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

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

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

六、switch

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

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

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

七、static

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

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

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

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

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

八、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 常量如何初始化嗎?

九、sizeof

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

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

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

十、指針

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

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

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

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

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

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

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

十壹、動態分配內存

1、動態分配的內存是保存在什麽地方的?

2、什麽情況下使用動態分配內存?

3、動態申請內存壹定要釋放,否則會內存泄露。妳是否使用過內存檢測工具?

十二、函數

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

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

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

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

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

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

7、遞歸如何使用?

十三、變量

1、全局變量,局部變量,常量分別保存在內存中的什麽地方?

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

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

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

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

十四、連接(Linux)

1、鏈接位於編譯過程的那個階段?

2、動態鏈接庫和靜態鏈接庫使用時有何區別?

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

4、動態鏈接有何優點?

5、動態鏈接庫中是否定義了非static 的全局變量?妳是否知道這是壹個非常危險的動作?

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

十五、運行時的數據結構(Linux)

1、妳知道什麽是段的概念嗎?

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

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

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

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

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

十六、Include

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

十七、聲明

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

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

十八、關於 復雜度 :

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

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

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

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

  • 上一篇:科學家發現地球最小爬行動物,是什麽樣子的?
  • 下一篇:《闖關東》和《闖關東前傳》有什麽關系嗎?
  • copyright 2024編程學習大全網