一、基礎概念與 C 語言核心題
1. 指針與內存操作
典型題目:
char str[] = "hello";
char *ptr = "world";
str[0] = 'H'; // 合法嗎?
ptr[0] = 'W'; // 合法嗎?為什么?
解析:
str
是棧上數組,可修改內容,str[0]='H'
合法。ptr
指向常量字符串區,修改會導致程序崩潰,考察對內存分區(代碼段、數據段、棧、堆)的理解。
2. 關鍵字深度理解
高頻考點:
- 解釋
volatile
作用,舉例說明使用場景(如寄存器操作、多線程共享變量)。 static
在函數內與全局作用域的區別(存儲位置、作用域生命周期)。- 對比
const char*
和char const*
與char* const
的差異(指針是否可修改)。
3. 大小端與字節對齊
經典問題:
- 設計函數判斷當前系統字節序(通過聯合體或指針強制類型轉換)。
- 分析結構體大小: