文档介绍:c,, 面试总结总结 C 面试题 1. 各种变量的定义 int a; unsigned long b; float c; double d; char e; int f[]; int *g() {} 注意下面几个后面的分号: struct stu{}; union {}; enum {}; 2. 用变量 a 给出下面的定义 a) 一个整型数 b) 一个指向整型数的指针 c) 一个指向指针的的指针,它指向的指针是指向一个整型数 d) 一个有 10 个整型数的数组 e) 一个有 10 个指针的数组,该指针是指向一个整型数的。 f) 一个指向有 10 个整型数数组的指针 g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 h) 一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数结果: a) int a; b) b) int *a; c) int **a; d) int a[10]; e) int *a[10]; f) int (*a)[10]; g) int (*a)(int); h) int (*a[10])(int); 3. 讲一下 的内容#include <> int main () { printf( “ hello ain :程序的主函数,程序的入口 3. 程序的语法 4. 函数调用: printf 5. 头文件包含: .h 文件 6. 转义符: \n 4. 打印杨辉三角#include <> int main() { int a[11][20], inti,j; for(i=0;i<11;i++) { for(j=0;j<20;j++) { a[i][j]=0; } for(i=0;i<10;i++) { for(j=0;j<=i;j++) { if(j<1) a[i][j]=1; else if(i==0)break; else a[i][j]=a[i-1][j-1]+a[i-1][j]; }} for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf(%d ,a[i][j]); printf(\n); } return 0; 二维数组的应用 和 strlen 的区别 strlen 用来求字符串的长度用的,是一个函数而 sizeof 是用来求指定变量或者变量类型等所占内存大小用的,是一个函数 的寻址范围#include<> #include<> int main() { char a[1000]; int i; for(i=0;i<1000;i++) { a[i]=-1-i; } printf(%d,strlen(a)); return 0;} 结果是 255 ,注意有符号和无符号的区别,有符号为-128 - 127 , - 128 减1为 127 ,无符号为 0-255 , stlrlen 遇0 结束,所以结为 255 。 7. 从上题可以引出为什么 2 的取反为-3 计算机都以补码存储数据, 2 取反后首位为 1 ,默认有符号,计算结果为-3. static const 关键词的用法 :请求编译器尽可能的将变量存在 cpu 的内部寄存器中, 只能修饰变量(1). 修饰变量类型必须是 cpu 所能接收的; ( 2) . 变量可能不是在内存中存储,所以不能用来获取变量地址(3). 一些常用变量,循环变量可以用 register 来定义,加快程序执行效率,节省 cpu 从内部抓取数据到内存的时间。 : 体验程序的封装性, static 修饰的变量存储在全局数据区的静态数据段,如果修饰的变量不做初始化,则默认为 0。 1) 可以用来修饰变量: (1) 修饰局部变量,使其变成了静态局部变量:延长生命周期至整个程序结束后再释放(开发时可替代全局变量) Static 局部变量只被初始化一次,下一次依据上一次结果值。(2) 修饰全局变量: 访问,不能在其他文件中访问(多线程时可用) 2) 修饰函数:使函数只能在本文件中调用(当函数不想被其他调用时) Static 函数在内存中只有一份,普通函数在每个调用中维持一份拷贝。 : const 修饰一个变量,其为只读变量,应在修饰时做初始化,不能通过所修饰的变量名来修改其内存空间所对应的值。 9. struct 的字对齐,半字对齐#include<> strcut stu { int a; cha