面试大全——C语言

1.入门基础

1.1从源码文件到可执行文件经历哪些过程?

a.预编译:处理预编译指令(#define #include #if ...)、去掉注释空格

b.编译:将源码文件翻译为汇编文件

c.汇编:将汇编文件翻译为机器代码,二进制文件(目标文件)

d.链接:将目标文件以及所依赖的库进行链接,生成最终的可执行文件

1.2C中的内存模型

栈:局部变量,函数的调用信息

堆:程序中动态分配的内存空间

数据区:全局变量,静态变量,字符串

程序区:程序代码

1.3什么是标识符?有哪些规定?

给变量,函数,结构体,数组等元素所给定的命名(字符序列)

强制:是有字母(大小),数字,下划线组成的

           不能以数字开头

            不能是关键字

建议:见名知义 ,小驼峰,下划线分割

1.4 32位或者64位系统地址是多少字节?

 4,8

2.变量

2.1声明与定义有什么区别?

声明:程序中告诉编译器变量的存在并指定类型,但不赋值

定义:程序中告诉编译器变量的存在并指定类型,同时赋值

2.2局部变量与全局变量有什么区别?

                             全局变量                                           局部变量

生命周期:从开始到程序运行结束            定义变量的函数或者代码块运行结束

作用域:全局                                                 定义变量的函数或者代码块

储存位置:数据区                                                             栈

2.3变量与常量有什么区别?

变量:可以被修改,在程序运行到该变量时分配内容

常量:不可修改,在编译期间分配内容

2.4定义常量的方法有哪些?有什么区别?你在工作时选着哪一种?

const:有作用域,有类型安全检查

#define:做文本替换,效率高

2.5存在一个变量num,num++与++num有什么区别?

num++先取值后运算

++num先运算后取值

3.宏

3.1C语言中有哪些预设编译指令?

#include #define #if #endif
            #else #elif #undef
            #ifdef #ifndef
3.2如何取消宏定义?

#undef

3.3什么是条件编译?应用场景有哪些?

在预编译阶段,可以根据条件选择哪些代码参与编译或者被排除

应用场景:跨平台
                多版本
             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值