- 0
- 0
- 约7.01千字
- 约 8页
- 2026-03-12 发布于河北
- 举报
C语言面试题及答案
一、基础语法类
1.简述C语言中char类型的取值范围,为什么是这个范围?
答案:默认情况下(多数编译器,如GCC、VC),char是有符号类型(signedchar),取值范围是-128~127;若显式声明为unsignedchar,取值范围是0~255。
核心原因:char类型占用1个字节(8位),有符号时最高位是符号位(0表示正数,1表示负数),剩下7位表示数值,最大正数127),负数用补码表示,最小负数-128,补码换算后对应十进制-128);无符号时8位全用于表示数值,最大255)。
2.说说C语言中static关键字的三种用法及作用
答案:static在C语言中有三个核心用法,分别对应不同场景:
1.修饰局部变量:将局部变量的存储位置从栈区移到静态数据区,生命周期延长至整个程序运行结束,初始化一次(默认初始化为0),作用域仍局限于所在函数/代码块,函数退出后变量值不丢失。
2.修饰全局变量:限制全局变量的作用域仅当前源文件(.c文件),其他源文件无法通过extern声明引用该变量,避免全局变量命名冲突。
3.修饰函数:将函数的作用域限制在当前源文件,其他源文件无法调用该函数(类似“私有函数”),同样是为了隔离作用域、减少冲突。
3.什么是宏定义?宏和函数的区别是什么?
答案:宏定义(#define)是预处理指令,用于将一个标识符替换为指定字符串(或表达式),预处理阶段直接进行文本替换,不做语法检查。
宏和函数的核心区别:
-执行阶段:宏在预处理阶段替换,函数在运行阶段调用;
-开销:宏无调用开销(直接替换),但可能产生冗余代码;函数有压栈、跳转、返回的开销;
-类型检查:宏不做类型检查,任何类型都能替换(可能出问题);函数有明确的参数和返回值类型检查;
-灵活性:宏可实现简单的代码片段替换(如交换两个数),不受参数类型限制;函数参数类型固定,需适配不同类型需重载(C语言无原生重载,需手动写不同名函数)。
示例:#defineSWAP(a,b){inttemp=a;a=b;b=temp;}是宏,swap(inta,intb)是函数。
二、指针与数组类
1.数组名和指针的区别是什么?为什么数组名有时能当作指针用?
答案:核心区别:数组名是“数组首元素地址的常量”(不可修改,如a++非法),指针是“存放地址的变量”(可修改,如p++合法);数组名代表整个数组时(如sizeof(a)),计算的是整个数组的字节大小,而指针sizeof(p)计算的是指针变量本身的大小(32位系统4字节,64位8字节)。
数组名能当作指针用的原因:C语言语法规定,数组名在大多数场景下会“隐式转换”为指向数组首元素的指针(地址值相同),比如数组访问a[i],本质是*(a+i),这里a就被转换为指针,通过偏移量i访问元素;再比如把数组名传给函数参数时,函数接收的其实是指针,而非整个数组(所以函数内sizeof(参数名)得到的是指针大小)。
示例:inta[5];int*p=a;这里a隐式转为a[0],p存放首元素地址,a[i]和p[i]等价,但a不可自增,p可以。
2.什么是野指针?如何避免野指针问题?
答案:野指针是指向“无效地址”的指针(比如未初始化、指向已释放内存、指向越界内存的指针),访问野指针会导致程序崩溃、内存异常(未定义行为)。
避免野指针的3个核心措施:
1.指针初始化:定义指针时要么指向合法内存(如inta=10;int*p=a;),要么初始化为NULL(int*p=NULL;),禁止定义无初始化的指针(int*p;非法,p的值随机,是野指针);
2.指针释放后置空:用free()释放指针指向的动态内存后,立即把指针设为NULL(free(p);p=NULL;),避免后续误访问已释放的内存;
3.避免指针越界:数组访问、内存操作时严格检查边界(如循环遍历数组时,索引不超过数组长度-1),不访问超出内存范围的地址。
3.用指针实现数组逆序(比如输入[1,2,3,4,5],输出[5,4,3,2,1])
答案:核心思路:用两个指针,一个指向数组首元素(left),一个指向数组尾元素(right),交换两个指针指向的元素,然后left++、right--,直到left=right停止。
代码实现:
c
#includestdio.h
voidreverse_arr(int*arr,intlen){
if(arr==NULL||len=1){//边界判断,避免空指针和长度异常
return;
}
int*lef
您可能关注的文档
- A2驾驶证科目一考试题及答案.docx
- A3驾照理论考试题库及答案.docx
- A3科目一考试题库及答案.docx
- ACAA考试题库及答案.docx
- ACCA 典型试题及答案解析.docx
- ACCA典型考试题目及答案.docx
- ACCA核心科目考试题型及答案解析.docx
- ACM基础试题及答案.docx
- ACM竞赛试题及答案.docx
- ACT考试典型题型及答案解析.docx
- 安徽省安庆市潜山市部分学校2025-2026学年七年级下学期阶段学情自测数学试题-普通用卷.docx
- 2026《微型无人机的设计基础综述》2600字.docx
- 安徽六安市金安区2025-2026学年八年级上学期2月期末物理试题-普通用卷.docx
- 2026《五菱汽车公司经营者股权激励实施成效及其启示》9700字.doc
- 北京市第一零九中学2026届高三下学期开学考试数学试题-普通用卷.docx
- 北京海淀实验中学2026届高三下学期数学开学检测试题-普通用卷.docx
- 2026《五菱汽车公司融资模式及融资风险分析》8700字.doc
- 2026《五菱汽车公司物流成本控制研究》文献综述开题报告(含提纲)3800字.doc
- 2026《五菱汽车公司薪酬改革问题研究》开题报告(文献综述)4200字.doc
- 2026《物流企业反内卷的战略转型研究—以顺丰控股为例》13000字.doc
最近下载
- 儿科学(第10版)儿童心肺复苏.pptx VIP
- 《第1课 身边的算法》说课稿教学反思-2023-2024学年小学信息技术浙教版2023五年级上册.docx VIP
- 2025-2026学年浙美版(新教材)小学美术三年级下册(全册)教学设计.docx
- 2025-2026年演出经纪人之演出市场政策与法律法规模拟题库及答案下载.pdf VIP
- 幼儿园教师春季卫生保健知识培训.pptx VIP
- 高速公路旧沥青路面铣刨料再生利用:技术、效益与前景.docx VIP
- 2025-2026学年浙美版(新教材)小学美术三年级下册《运动会奖杯设计》教学设计.docx VIP
- 2024 - 2025人教版(PEP)英语小学二年级下册教学计划 .docx VIP
- 2026年XX施工安全免责协议书.docx VIP
- DLT5300-2013 1000kV 架空输电线路工程施工质量检验及评定规程.docx VIP
原创力文档

文档评论(0)