考研复试(四)-C语言

1、内存分配

1、堆区:由malloc()系列函数或者new操作分配内存。他的生命周期由free或delete决定,在没有释放之前他们都会一直存在,直到程序结束。其特点就是使用灵活,空间空间比较大,但是容易出错。

2、栈区:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束这些内容也会被自动销毁,其特点就是效率高,但是空间有限。

3、静态区:保存自动局部变量和static变量,在整个程序的生命周期内都存在。

2、运行C程序的步骤和方法

1、预处理:用于将所有的头文件以及宏定义替换成其真正的内容
2、编译:将经过预处理之后的程序转换成特定汇编代码的过程
3、汇编:将上一步的汇编代码转换为机器码
4、链接:将多个目标文件以及所需的库文件链接成最终的可执行文件。

3、关键字static的作用是什么?

在C语言中,关键字static有三个明显的作用:
1、 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2、在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3、 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

4、堆栈溢出一般是由什么原因导致的?

1.没有回收垃圾资源

2.层次太深的递归调用

5、请说出const与#define 相比,有何优点?

const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王不叫小王叭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值