C语言简记

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: