C/C++面试知识点全集

知识点

  1. const 有什么用途

    主要有三点:

    1:定义只读变量,即常量

    2:修饰函数的参数和函数的返回值

    3: 修饰函数的定义体,这里的函数为类的成员函数,被const修饰的成员函数代表不修改成员变量的值

  2. 指针和引用的区别

    1:引用是变量的一个别名,内部实现是只读指针

    2:引用只能在初始化时被赋值,其他时候值不能被改变,指针的值可以在任何时候被改变

    3:引用不能为NULL,指针可以为NULL

    4:引用变量内存单元保存的是被引用变量的地址

    5:“sizeof 引用” = 指向变量的大小 , “sizeof 指针”= 指针本身的大小

    6:引用可以取地址操作,返回的是被引用变量本身所在的内存单元地址

    7:引用使用在源代码级相当于普通的变量一样使用,做函数参数时,内部传递的实际是变量地址

  3. 关键字static的作用

    1. 函数体内 static 变量的作用范围为该函数体,不同于 auto 变量, 该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值

    2. 在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问

    3. 在模块内的static 函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内

    4. 在类的static 成员变量属于整个类所拥有,对类的所以对象只有一份拷贝

    5. 在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的 static 成员变量

      介绍它最重要的一条:隐藏。(static函数,static变量均可) –> 对应上面的2、3项
      当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

编译、链接

  1. include guards (#ifndef…#define….#endif)可以防止头文件多次引用,为何全局变量定义在此,会提示多次定义?
    A: (1)include guards 是防止头文件相互包含从而引起循环引用的错误的。
    (2)对于全局变量定义在头文件中时,Link阶段,编译器会看见两个a的定义。原因在于 include guards 只在同一个translation unit(一个c文件和include的文件的编译过程)内起作用,两个编译单元是编译过程是分开的,所以无法察觉到另外一个里面的#ifdefine内容。

  2. 在test.cpp文件中定义一个全局变量,在其他文件中引用时,要 extern 还是include “test.h”
    ?
    A:(1)不需要包含include,只需要extern 就可以了。其实 test.h中也是extern。含义是一样的。
    (2)static 函数只能在本文件中调用。

参考:c语言头文件中定义全局变量的问题

多线程

原理:C++多线程
编码:c++多线程编程:常见面试题

参考

C++面试集锦( 面试被问到的问题 )
常见C++面试题及基本知识点总结(一)
高级:c++研发面试

数据结构和算法

链表

单链表反转
判断链表相交

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值