C语言面试题汇总(1)

目录

1.预编译

问题1:什么是预编译?

问题2:何时需要预编译?

2.关键字:static,const,volatile

Static的用途:

静态存储类型

内部链接属性

Const的用途:

声明常变量,使得指定的变量不能被修改;

修饰函数形参,使得形参在函数内不能被修改,表示输入参数;

修饰函数返回值,使得函数的返回值不能被修改。

Volatile的用途:


1.预编译

问题1:什么是预编译?

预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。

主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。

问题2:何时需要预编译?

总是使用不经常改动的大型代码体。

程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头。

2.关键字:static,const,volatile

Static的用途:

一是用于修饰存储类型使之成为静态存储类型;

二是用于修饰链接属性使之成为内部链接属性。

静态存储类型

     在函数内定义的静态局部变量,该变量存在内存的静态区,所以即使该函数运行结束,静态变量的值不会被销毁,函数下次运行时能仍用到这个值。

     在函数外定义的静态变量——静态全局变量,该变量的作用域只能在定义该变量的文件中,不能被其他文件通过extern引用。

内部链接属性

      静态函数只能在声明它的源文件中使用。

Const的用途:

声明常变量,使得指定的变量不能被修改;

例如:

const int a = 5;/*a的值一直为5,不能被改变*/

const int b; b = 10;/*b的值被赋值为10后,不能被改变*/

const int *ptr; /*ptr为指向整型常量的指针,ptr的值可以修改,但不能修改其所指向的值*/

int *const ptr;/*ptr为指向整型的常量指针,ptr的值不能修改,但可以修改其所指向的值*/

const int *const ptr;/*ptr为指向整型常量的常量指针,ptr及其指向的值都不能修改*/

修饰函数形参,使得形参在函数内不能被修改,表示输入参数;

例如:

int fun(const int a);或int fun(const char *str);

修饰函数返回值,使得函数的返回值不能被修改。

例如:

const char *getstr(void);使用:const *str= getstr();

const int getint(void);  使用:const int a =getint();

Volatile的用途:

可能被系统、硬件、进程/线程改变,强制编译器每次从内存中取得该变量的值,

而不是从被优化后的寄存器中读取。

例如:硬件时钟;多线程中被多个任务共享的变量等。

 


  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值