C/c++面试题一

1、关键字static的作用?谈谈你的理解和你曾经怎么使用的?

解答:1)隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。

2static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。

3static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0×00,某些时候这一特点可以减少程序员的工作量

2、“引用”与“指针”的区别?

解答:引用是对象的别名, 操作引用就是操作这个对象, 必须在创建的同时有效得初始化(引用一个有效的对象, 不可为NULL), 初始化完毕就再也不可改变, 引用具有指针的效率, 又具有变量使用的方便性和直观性, 在语言层面上引用和对象的用法一样, 在二进制层面上引用一般都是通过指针来实现的, 只是编译器帮我们完成了转换. 之所以使用引用是为了用适当的工具做恰如其分的事, 体现了最小特权原则.

3、#include<file.h> 和 #include “file.h”的区别。

解答:对于#include <file.h> ,编译器从标准库路径开始搜索 file.h对于#include“file.h” ,编译器从用户的工作路径开始搜索 a.h

4、关键字const有什么作用,是什么含义?谈谈你对下面的认识。

指明变量或对象的值是不能被更新,引入的目的是为了取代预编译指令  

const int a;  说明a是一个常量  不能被改变

   int const a; 与上一个一样

   const int* a; // const修饰指向的对象,a可变,a指向的对象不可变

   int *const a; //a的地址不可以改变 但是a的值可以改变

   int const*a const; //a的地址和a的对象都不可以改变

5、请说出const与#define的区别,并作出比较。

C中是使用宏#define定义, C++使用更好的const来定义。
区别:

1const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换,没有类型安全检查,而且在字符替换时可能会产生意料不到的错误(边际效应)。

2)有些编译器可以对const常量进行调试,不能对宏调试。

 

6、分别写出bool, int ,float, 指针类型的变量a与”零”比

   较的语句。

If(flag)         {A;} Else {B;}

If(0== flag)   {A;} else {B;}

If(NULL== flag){A;} else {B;}

7、写一个标准宏。

#define MAX 50

 

8、主函数被什么调用?为什么要返回0?

主函数的作用是程序入口点,只有进入这个入口才能完成里面的函数调用,-1 0,1 返回0证明程序没有问题

9、在字节对齐为4的情况下,求sizeof(name)=12

   struct name

{

 char str;

 int num;

 short x;
};

10、谈谈你对heap和stack的理解?

解答:

1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,如全局变量,static变量。

2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

3)从堆上分配(动态内存分配)程序在运行的时候用mallocnew申请任意多少的内存,程序员负责在何时用freedelete释放内存。动态内存的生存期自己决定,使用非常灵活。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值