资源介绍
C语言各种常用关键字详细解释学习,都是总结面试,都是比较好的笔试题。
1 变量 3
1.1 全局变量,局部变量,,常量分别保存在内存中的什么地方? 3
1.2 不同类型的变量,你是否知道其作用域? 3
1.3 全局变量和局部变量是否可以重名?你是否在这样做? 3
1.4 局部变量在函数退出后是否有效,为什么? 3
1.5 全局变量为什么不允许定义在头文件中?有何危害? 3
2 Static 4
2.1 static的三个主要作用是什么? 4
2.2 static的修饰的局部变量是保存在什么地方的?全局变量哪? 5
2.3 static修饰的全局变量和函数,在其他的文件中是否可以访问?如何访问? 5
2.4 你知道static是c语言中实现封装和隐藏的利器吗?你是否经常使用? 5
2.5 定义在不同源文件中的static全局变量,编译器是否允许他们的变量名称相同? 5
2.6 你是否知道auto、extern、register、volatile、restrict、inline的用法? 6
3 const 6
3.1 你是否经常使用const来表明不能够被更改的变量? 6
3.2 你是否经常使用const常量来代替宏? 6
3.3 下面四种情况,你知道是各表示什么意思吗? 6
3.4 你知道const常量如何初始化吗? 7
4 enum枚举 7
4.1 到底enum所定义出来的类型是一个什么样的类型呢? 7
4.2 作为一个用户自定义的类型其所占用的内存空间是多少呢? 8
4.3 是否可以指定枚举中各项的值? 8
4.4 如果不指定值,枚举的第一个值是多少? 8
4.5 枚举的值是否可以是负数? 8
4.6 定义枚举的时候,你是否专门定义了枚举的最小值和最大值? 9
5 switch 9
5.1 switch(c)中的c的数据类型有哪些? 9
5.2 你是否在所有的switch中都加了default语句? 9
5.3 是否在所有的case中都加了break语句(一般情况的做法)?如果你不加break,将会发生什么? 9
6 sizeof 9
6.1 对于字符数组,strlen和sizeof的值是否相同? 9
6.2 Sizeof本质上是什么?函数?宏?其他? 9
6.3 Sizeof的返回值是什么类型? 10
7 动态分配内存 10
7.1 动态分配的内存是保存在什么地方的? 10
7.2 什么情况下使用动态分配内存? 10
7.3 动态申请内存一定要释放,否则会内存泄露。你是否使用过内存检测工具? 10
8 字符串 10
8.1 strlen()函数的返回值是什么类型的? 10
8.2 字符串strlen() 的值,是否和他占据的内存空间相同? 10
8.3 你是否知道strcpy 函数存在的潜在风险?如何避免? 11
8.4 如果一个字符串没有字符串结束符,而调用str 开头的库函数,会发生什么? ?? 11
8.5 Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()内部到底是如何运行的?这些函数到底对源字符串和目标字符串做了些什么?你是否观察过它们运行时两个字符串内存的变化? 11
8.6 上面这些函数使用时,各有哪些需要注意的地方? 11
8.7 你会几种字符串查找操作? 11
8.8 C语言中有字符串这个数据类型吗? 11
8.9 对字符串进行操作的时候,是否为字符串结尾符预留存储位置?不然的话容易造成非常访问内存。 11
9 数组 12
9.1 你肯定知道,定义“int a[10]; ”, a[10] 这个元素是无效的。 12
9.2 你知道几种数组初始化的方法? 12
9.3 数组和指针有千丝万缕的联系而又不同,你是否对他们在不同情况下的使用进行过详细的总结? 12
9.4 “int calendar[10][20]; ”,这是一个什么样的数组?它拥有 10 数组类型的元素,还是 20 个? 12
9.5 “int a[10]; ”,数组名 a 在本质上是一个什么?你是否打印过 a 的值? 12
9.6 你知道几种获取数组某元素的方法? 12
9.7 指针和数组相同吗?什么时候相同?什么时候不同? 12
9.8 用指针和下标访问数组元素,那种方式更快? 16
10 结构体 16
10.1 你知道什么是位域结构体吗?如何定义它?如何使用它? 16
10.2 你知道字节对齐对结构体占用内存空间大小的影响吗?如何计算结构体占用内存的小? 17
11 宏 19
11.1 你知道宏的本质是什么吗?函数?语句?类型定义?或者其他? 19
11.2 你知道语言设计者为什么设计宏吗?这些原因目前是否仍然成立? 19
11.3 你会设计带有参数的宏吗? 19
11.4 你知道使用宏的参数的的时候的注意事项吗? 19
11.5 你会设计带有可变参数的宏吗? 19
11.6 你知道使用宏有什么劣势吗? 20
11.7 你有没有更好的替代方案? 20
11.8 为什么说宏定义不好? 21
12 如何避免对同一头文件的多次include? 22
13 什么是声明,什么是定义? 22
14 你是否会运用c语言声明的优先级规则? 23
15 什么是预编译,何时需要预编译? 23
Total time: 90 minutes 23
16 指针数组和数组指针的区别? 30
16.1 指针的声明 30
16.1.1 一维数组 31
16.1.2 多维数组 32
16.1.3 指针数组 33
16.1.4 指针的指针 33