一、基础概念与 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. 大小端与字节对齐
经典问题:
- 设计函数判断当前系统字节序(通过联合体或指针强制类型转换)。
- 分析结构体大小: