面试中常被问到的C语言基础知识

1.原码、反码和补码

  • 位(bit)是计算机中处理数据的最小单元,其值只能是0或1;

  • 字节(Byte)是计算机处理数据的基本单元,一个字节为8位;

  • 原码:用最高位表示符号位,其余位表示数值位的编码成为原码;其中正数的符号位为0,负数的符号位为1;

  • 正数的原码、反码、补码均相同;

  • 负数:

    • 负数的反码:把原码的符号位保持不变,数值位逐位取反;

    • 负数的补码:在反码的基础上加一。

      补码:主要为了CPU运算器在进行减法运算时避免借位而设计,整数类都以补码来存储。

2.switch()的()内都可以是什么类型?

  • 可以是short,char,int,long和枚举类型,不能是float,double,boolean
  • case后面只能是整型或者字符型的常量或常量表达式

3. C语言全局变量和局部变量可不可以重名?

可以,只不过局部变量可以覆盖全局变量,在局部变量的范围内全局变量不起作用。

4.内存对齐

要求某种数据类型对象的地址必须是2、4或者8的倍数,目的是提高CPU访问数据的效率。

5.structunion比较

相同点:二者都是常见的符合结构,都是由多个不同的数据类型成员组成;

不同点:联合体中所有的成员公用一块地址空间,即联合体只存放一个被选中的成员,内存空间是最长成员占用的空间,需要进行内存对齐。

结构体所有成员占用空间是累加的,其所有成员都存在,不同成员会存在不同的地址,内存空间等于所有成员占用的空间之和,同样需要内存对齐。

6. C和C++中的struct区别

  1. C语言中的struct不能有函数成员,而C++的struct可以有 ;

  2. C语言中的struct中的数据成员没有private、public和protected访问权限的设定,而C++的struct成员有访问权限设定;

  3. C语言的struct是没有继承关系的,而C++的struct却有丰富的继承关系。

7. C ++中的struct与class的区别

8.大端和小端

9.static(静态)变量关键字

10.const的作用

11.数组指针与指针数组;函数指针与指针函数;常量指针与指针常量

12.typedef#define

13.将一个int型变量赋值给一个char型变量

未完待续。。。
完整答案,欢迎关注公众号,干货满满。
欢迎关注

猜你喜欢

转载自blog.csdn.net/weixin_43499780/article/details/109037322