1.C程序:
只包含一个主函数main(),也可以包含一个主函数和若干个其它函数(库函数和自定义函数)
函数类型 函数名(形式参数类型说明表)
{
声明部分
执行部分
}
2.函数调用的形式:
(1)作为函数语句调用。函数一般无返回值。例:
printf(“Hello,World!\n”);
(2)作为函数表达式调用。例:
m=max(a,b)*2;
(3)作为函数参数调用。例:
printf(“%d”,max(a,b));
m=max(a,max(b,c));
3.形参与实参
形式参数:定义函数时函数名后面括号中的变量名
实际参数:调用函数时函数名后面括号中的表达
4.参数传递的两种方式
1.值传递方式方式:
函数调用时,为形参分配单元,并将实参的值复制到形参中;
调用结束,形参单元被释放,实参单元仍保留并维持原值;
特点:
形参与实参占用不同的内存单元; 单向传递
2.
地址传递方式:
函数调用时,将数据的存储地址作为参数传递给形参
特点:
形参与实参占用同样的存储单元;
“双向”传递;
实参和形参必须是地址常量或变量;
5.函数的执行过程
1.通过函数名,找到函数的入口地址;
2.给形参分配空间;
3.值传递;
4.执行函数体的语句;
5.返回;
6.释放空间。
6.
变
变量的存储类型
存
注意点:
1. 不能对寄存器变量取地址,,在CPU中,不再内存中;
2. static: 修饰静态局部变量,只定义一次,只分配一次内存空间,改变变量的生存周期至程序运行结束;
修饰全局变量,该变量只能在本文件访问;
修饰函数,使得该函数只能在本文件中使用。
3.没有被初始化的局部变量时垃圾值,而全局变量自动赋初值为0或空字符。
2.自动变量是最常用的。 关键字auto能够显式地指定存储类别。
显式定义 auto int x,y;
隐含定义 等价 int x,y;
实际上关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,即动态存储方式。
程序中大多数变量属于自动变量。
3.对于使用频繁的变量,可以使用register声明为寄存器变量,其值存储在CPU中,加快了运行速度。
如:
register int x;
register char c;
4.函数中的局部变量的值在函数调用结束后不消失而保留原值,以便下一次调用该函数时可以使用上一次 调用的最后结果。这时就应该指定该局部变量为“静态局部变量”。
5.外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。
⑴在一个文件内声明外部变量
如果全局变量在后面定义,而在前面的函数中要使用,则必须在使用前用extern声明该全局变量。
如:extern int Abc;
注意:外部变量只限于被本文件引用,而不能被其它文件引用,可以在定义外部变量时加一个static声明。
变量的存储类型变量的存储类型