c基础面试题汇总

1. gcc 编译器编译的完整流程,分别有什么作用?
gcc 编译器编译的完整流程有四步,分别是 预处理、编译、汇编、链接
预处理 :处理源文件中的 #ifdef #include #define 等预处理命令,该阶段会生成一个中间文件 .i
gcc  - E  hello.c–o  # 可以使用 -E 选项生成 .i 文件
编译 gcc 把预处理后的结果编译成汇编语言代码,输入的是 .i ,编译后生成汇编语言文件 .s
gcc  - S  hello.i –o hello.s
汇编 :编译器把编译出来的汇编语言汇编成具体 CPU 上的目标代码(机器代码)。输入汇编代码文
.s ,输出目标代码文件 .o .obj。
gcc  – c hello.s –o hello.o
链接 :把多个目标代码模块链接成一个大的目标代码模块。输入目标代码文件 .o (与其它的目标
代码文件、库文件、引导代码),汇集成一个可执行的二进制代码文件。
gcc  hello.o –o hello
2. 什么是回调函数?
回调函数就是一个通过函数指针调用的函数。所以当一个函数作为参数使用的时候 , 这个函数就是
回调函数。
3. 地址能否使用 printf 函数中的 %u 形式打印?
可以,但是还是 %p 是最标准的。
4. 结构体与共用体的区别
首先结构体与共用体都是构造型数据类型,它们的成员变量都可以定义为不同类型的。
结构体可以同时存储多种变量类型,而共同体同一个时间只能存储和使用多个变量类型的一种,当
另一时间,变量类型被改变后,原来的变量类型和值将被舍弃。
共用体的作用是同一个数据项可以使用多种格式,可以节省空间。

结构体与共用体的主要区别在于存储方式的不同:

结构体在定义后,声明变量时系统为该变量申请内存空间为所有成员变量所占用的内存空间之和。

共用体变量声明时,变量占有空间不变,在同一时间,只能存储某一个成员的信息。

5. static const volatile 关键字有什么作用?

static

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值