- 总是使用不经常改动的大型代码体。
- 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头
- 预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
局部变量可以与全局变量同名,局部变量会屏蔽全局变量。
3.如何引用一个已经定义过的全局变量?可以用extern关键字,外部就可以调用这个变量了。
4.全局变量是否可以被定义在多个.C文件中吗?可以,在不同的C文件中以static形式来声明同名全局变量。但是只能在一个.c文件中赋初值。
5.static 关键字的作用1.限制全局变量的作用域
2.设置局部变量的存储域
3.static(全局/局部)变量只初使化一次
防止编译器将对所声明的语句进行优化
7. const关键字的作用- 可以定义 const 常量
- const 可以修饰函数的参数、返回值,甚至函数的定义体。被 const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
可以在不同的.c文件中引用已经定义过的全局变量
9.sprintf函数功能:向一个字符串内格式化输入
函数功能:字符串拷贝
函数功能:字符串固定位数拷贝
函数功能:固定位数拷贝
12.strcat函数与strncat函数strcpy 和strncpy函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。
memcpy 函数就是内存拷贝,实现 将一个 内存块 的内容复制到另一个 内存块这一功能。
函数功能:字符串的连接
函数功能:字符串的固定位数连接
功能:字符串比较函数
功能:字符串固定位数比较函数
计算变量所占的字节的长度,包含‘ ’。
返回字符串的长度不包括终止符 ’ ’
将字符串转换成浮点数
将字符串转换成整型数的函数
18.GCC编译过程对于#include
,编译器从标准库路径开始搜索 filename.h
对于#include“filename.h” ,编译器从用户的工作路径开始搜索 filename.h
1.预处理,生成预编译文件(.文件):
Gcc –E hello.c –o hello.i
2.编译,生成汇编代码(.s文件):
Gcc –S hello.i –o hello.s
3.汇编,生成目标文件(.o文件):
Gcc –c hello.s –o hello.o
4.链接,生成可执行文件:
Gcc hello.o –o hello
在成功编译之后,就进入了链接阶段
原因:
- 局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。
- 指针或数组越界。例如进行字符串拷贝,或处理用户输入等等。
- 递归调用层次太多,也会导致堆栈溢出。
解决:
- 动态内存分配
- 增大堆栈大小值
- 用栈把递归转换成非递归
- 使用static对象替代nonstatic局部对象
欢迎指正谢谢!



