C语言的一些基础笔记
static
关键字
变量
局部变量
- 普通局部变量
- 存储于进程栈空间,使用完毕会立即释放。
- 静态局部变量
- 即使在声明时未赋初值,编译器也会把它初始化为0。
- 存储于进程的全局数据区,即使函数返回,它的值也会保持不变。
全局变量
- 普通全局变量
- 对整个工程可见,其他文件可以使用
extern
外部声明后直接使用。 - 也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。
- 对整个工程可见,其他文件可以使用
- 静态全局变量
- 仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。
- 在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。
函数
- 静态函数只能在声明它的文件中可见,其他文件不能引用该函数
- 不同的文件可以使用相同名字的静态函数,互不影响
- 非静态函数可以在另一个文件中直接引用,甚至不必使用
extern
声明
参考资料: https://blog.csdn.net/guotianqing/article/details/79828100
条件运算符 ?:
- 右结合性
1
w<x ? x+w : x<y ? x : y
2
// 与
3
w<x ? x+w : ( x<y ? x : y) //等价
4
(w<x ? x+w : x<y) ? x : y //不等价
一些比较经典的报错
main函数
1 | /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start': |
2 | (.text+0x18): undefined reference to `main' |
3 | collect2: ld returned 1 exit status |
其实只是代码粗心把main()
函数打错了, 比如mian()
reference: