1.改变计算机存储单元里的数据或者做输入输出操作都算Side Effect
2.头文件声明我们需要用到的库函数
3.引用了math.h的库则使用Linux编译的时候gcc text3.c -lm指明路径,gcc默认指明libc.so库文件中,对应的是-lc,-lm指明libm.so,多线程的C程序依赖于libpthread.so
4.$?是Shell中的一个特殊变量,表示上一条命令的退出状态,echo表示打印
1.函数原型:包含函数名称、参数及其个数、返回值类型;
eg.
void threeline(void);
以上只能成为函数声明,只有带函数体的才能成为函数定义
而函数原型,不管包不包括函数体,均要在使用前出现
2.对于old style c,由于声明不包含函数的参数和个数,则对函数不做相应的语法检查,容易引入bug,则不倡导使用
3.void 对函数的参数类型,返回值,函数的指针类型进行声明
4.有时候我们把函数叫做接口(Interface),调用函数就是使用这个接口,使用接口的前提是必须和接口保持一致
EXE.
这个例子里面如果写printf函数将i,j打印出来,结果还是i,j为1,2.原因是参数分为形参和实参,而increment(i)增加1的部分是在increment(x)中的x的存储空间,因此,发生改变的是形参的存储空间而不是实参i和j
1.全局变量:全局变量定义在所有的函数体之外,易导致某个局部函数的读写顺序出错,易出bug,因此能用局部变量的就不用全局变量
2.局部变量可以用类型相符的任意表达式来初始化,而全局变量只能用常量表达式(Constant Expression)初始化,因为全局变量必须在编译的时候就已经得到初始值,如果全局变量的定义包含需要调用的函数,则必须在执行的时候才能得知其初始值
3.bebug的时候不要被表面的值蒙蔽,把必要条件当成充分条件
4.函数也可以局部定义