C语言——八股文(笔试面试题)

简介: C语言——八股文(笔试面试题)

1、 什么是数组指针,什么是指针数组?
数组指针:指向数组的指针
指针数组:数组中的元素都是指针

2、 什么是位段,什么是联合体
位段(Bit Field):在C语言中,允许在一个整数类型的数据结构中定义若干个长度为任意比特位的字段。
联合体(Union):允许多种数据类型的变量共用同一块内存区域。

3、 什么是递归,什么是回调?
递归:函数直接或间接地调用自身的过程。
回调:一个函数作为参数传递给另一个函数,并由后者在适当的时候调用前者。

4、 什么是越界,什么是溢出?
越界:访问超出数组或其他容器范围的元素。
溢出:数值超过了其表示范围的最大值或最小值。

5、#define和typedef的区别?

define:宏定义,用于创建常量、替换字符串等。

typedef:类型别名,用于创建新的类型名称。

6、 Static与extern的作用?
static:限制变量或函数的作用域。
extern:声明外部链接性,可以在其他文件中使用该变量或函数。

7、 二级指针和二维数组有什么关系?
二级指针可以用来操作二维数组。例如,
int ptr = (int)malloc(sizeof(int) rows);`

8、 栈内存,堆内存,数据区有啥区别?
栈内存:自动分配和释放,存储局部变量和函数调用信息。
堆内存:动态分配和释放,通过new/malloc申请,delete/free释放。
数据区:静态分配,存储全局变量和静态变量。

9、 负数及浮点型数据在内存中是如何存放的?
负数通常采用补码形式存储。
浮点数按照IEEE 754标准存储,分为符号位、指数位和尾数位。
[负数及浮点型数据在内存中是如何存放的博文参考链接]

10、 如何在代码中打印所在文件名,函数名及行号?
使用预处理器宏FILEFUNCTIONLINE
FILE
func
LINE
eg: printf("%s-%s-%d\n", FILE,func,LINE);

11、 局部变量能否和全局变量重名?
可以,但局部变量会屏蔽同名的全局变量。

12、 如何引用一个已经定义过的全局变量?
直接使用变量名即可。

13、 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
不建议这样做,因为会导致链接错误。应该在某个.C文件中定义,在头文件中声明。

14、 static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?
static全局变量只在当前文件内有效。

​ static局部变量在整个程序运行期间都存在。

​ static函数只能在当前文件内部调用。

15、 写出float x 与“零值”比较的if语句。
// if (fabs(x) < FLT_EPSILON)
if ( x > 0.000001 && x < -0.000001)
16、 Struct与union的区别?
Struct:成员按顺序依次排列,每个成员有自己的空间。
Union:所有成员共享同一块内存空间。
17、 关键字volatile有什么含义?并给出三个不同的例子
volatile:指示编译器不要对变量进行优化,确保每次读写都是实际的硬件操作。

示例:

​ 1. 外部设备寄存器
​ 2. 共享内存
​ 3. 实时系统中的信号

18、 C语言程序代码优化方法

  • 减少不必要的计算
  • 避免重复计算
  • 使用更高效的数据结构
  • 合理利用缓存

19、 物理地址,虚拟地址,逻辑地址和总线地址的区别

  • 物理地址:内存的实际地址。
  • 虚拟地址:操作系统提供的抽象地址。
  • 逻辑地址:汇编语言中的地址。
  • 总线地址:计算机总线上使用的地址。

20、 关键字const有什么含意

  • const:声明变量或对象不可修改。

21、malloc(0) 的意义
在C语言中,malloc函数用于动态分配内存。
根据C标准,malloc(0)的行为可能因编译器和系统而异。针对malloc(0)的调用, 可能会返回以下两种结果之一:
1.返回一个非空指针:在这种情况下,该指针不能用于访问任何内存,但可以被传递给free函数以释放该块内存。这意味着malloc(0)返回的指针和正常返回的指针具有相同的属性,即你可以将其传递给free(而不会引|发错误。
2.返回.NULL指针:在这种情况下,malloc(0)表示动态内存分配失败。此时,你需要检查返回的指针是否为NULL,以确保在使用该指针之前不会出现问题。

include

include

int main() {
void *ptr-=mal1oc(0) ;
if (ptr==NULL) {
printf (' Memory allocation failed. \n' );
}else {
printf(' Memoryallocation successed. \n'); //释放内存free(ptr); }
return 0;
}
为了确保代码在不同的编译器和系统上正确运行,请始终检查malloc的返回值,而不是假定其
行为。这样,即使在malloc(0)返回非空指针或NULL指针的情况下,代码仍将正确运行。

目录
相关文章
|
17天前
|
存储 弹性计算 人工智能
阿里云Alex Chen:普惠计算服务,助力企业创新
本文整理自阿里云弹性计算产品线、存储产品线产品负责人陈起鲲(Alex Chen)在2024云栖大会「弹性计算专场-普惠计算服务,助力企业创新」中的分享。在演讲中,他分享了阿里云弹性计算,如何帮助千行百业的客户在多样化的业务环境和不同的计算能力需求下,实现了成本降低和效率提升的实际案例。同时,基于全面升级的CIPU2.0技术,弹性计算全线产品的性能、稳定性等关键指标得到了全面升级。此外,他还宣布了弹性计算包括:通用计算、加速计算和容器计算的全新产品家族,旨在加速AI与云计算的融合,推动客户的业务创新。
|
24天前
|
存储 人工智能 弹性计算
产品技术能力飞跃,阿里云E-HPC荣获“CCF 产品创新奖”!
9月24日,在中国计算机学会举办的“2024 CCF 全国高性能计算学术年会”中,阿里云弹性高性能计算(E-HPC)荣获「 CCF HPC China 2024 产品创新奖」。这也是继 2022 年之后,阿里云E-HPC 再次荣获此奖项,代表着阿里云在云超算领域的持续创新结果,其产品能力和技术成果得到了业界的一致认可。
|
8天前
|
SQL 人工智能 安全
【灵码助力安全1】——利用通义灵码辅助快速代码审计的最佳实践
本文介绍了作者在数据安全比赛中遇到的一个开源框架的代码审计过程。作者使用了多种工具,特别是“通义灵码”,帮助发现了多个高危漏洞,包括路径遍历、文件上传、目录删除、SQL注入和XSS漏洞。文章详细描述了如何利用这些工具进行漏洞定位和验证,并分享了使用“通义灵码”的心得和体验。最后,作者总结了AI在代码审计中的优势和不足,并展望了未来的发展方向。
|
3天前
|
负载均衡 算法 网络安全
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
阿里云平台WoSign品牌SSL证书是由阿里云合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品,用户在阿里云平台https://www.aliyun.com/product/cas 可直接下单购买WoSign SSL证书,快捷部署到阿里云产品中。
1843 6
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
|
2天前
|
存储 安全 Oracle
【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试
本文探讨了智能合约的安全性问题,特别是重入攻击、预言机操纵、整数溢出和时间戳依赖性等常见漏洞。文章通过实例详细分析了重入攻击的原理和防范措施,展示了如何利用通义灵码辅助检测和修复这些漏洞。此外,文章还介绍了最新的研究成果,如GPTScan工具,该工具通过结合大模型和静态分析技术,提高了智能合约漏洞检测的准确性和效率。最后,文章总结了灵码在智能合约安全领域的应用前景,指出尽管存在一些局限性,但其在检测和预防逻辑漏洞方面仍展现出巨大潜力。
|
6天前
|
Web App开发 算法 安全
什么是阿里云WoSign SSL证书?_沃通SSL技术文档
WoSign品牌SSL证书由阿里云平台SSL证书合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品。
1778 2
|
15天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
22天前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5113 15
|
9天前
|
人工智能 关系型数据库 Serverless
1024,致开发者们——希望和你一起用技术人独有的方式,庆祝你的主场
阿里云开发者社区推出“1024·云上见”程序员节专题活动,包括云上实操、开发者测评和征文三个分会场,提供14个实操活动、3个解决方案、3 个产品方案的测评及征文比赛,旨在帮助开发者提升技能、分享经验,共筑技术梦想。
1039 147
|
17天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1583 12