C语言函数详解

来源:互联网 发布:淘宝如何解除手机绑定 编辑:程序博客网 时间:2024/04/27 20:27

/***********函数调用*************/
/*
函数原型是只对函数进行声明,而不对函数进行实现
函数掉用的方式
1.把函数调用作为一个语句:printf("Hello Word!");
2.函数表达式调用:c = 2 * max(a,b);
3.将函数作为参数进行调用:m = max(a, max(b,c));
*/
 
/**********函数参数***************/
/*
可以用数组名作为函数参数
float average(float array[10]);
float average(float array[]);
形参数组可以不指定大小
*/
 
/**********变量作用域***************/
/*
在一个函数内部定义的变量为局部变量,局部变量只在本函数范围内有效
在一个源文件中,有若干个函数,在函数外定义的变量为全局变量,全局变量可以为本文件中其他函数所共用。
它的有效范围为从定义变量的位置开始到本源文件结束。
*/
 
/**********变量的存储类别**********/
/*
1.动态存储方式和静态存储方式
从变量值存在的生存期来分,可以分为静态存储方式和动态存储方式。
所谓静态存储方式是在程序运行期间由系统分配固定的存储空间的方式。
而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。
 
内存中供用户使用的存储空间分为三部分:
程序区
静态存储区 (全局变量)
动态存储区 (未加static声明的函数局部变量、函数的形式参数)
 
在C语言中,每一个变量和函数有两个属性:数据类型和数据的存储类别。
数据类型(int char float double)
存储类别指的是数据在内存中的存储方式。静态存储或动态存储(auto static register extern)。
 
//局部变量
auto变量:函数中的局部变量,如果不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。
在函数调用时动态分配存储空间,调用结束后就自动释放这些空间。
在函数体内 auto int a=10; 等价于 int a=10;
 
用static声明局部变量:有时候需要函数调用结束后保留局部变量的值,以便在下一次函数调用时可以取到上次调用后的值。
这时就应该指定该局部变量为"静态局部变量",用static关键字进行声明。
 
用register声明局部变量(只有局部自动变量和形式参数可以作为寄存器变量)
寄存器变量的值放到了CPU的寄存器中,这样比放到内存中提高了执行效率。
 
//全局变量
用extern声明外部变量:外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。
有时需要用extern来声明外部变量,以扩展外部变量的作用域。用extern也可以将外部变量的作用域扩展到其他文件。
 
用static声明外部变量只限于本文件引用,其他文件中用extern无法引用
*/

 

 

 

file1.c

 

file2.c

 

file3.c

 

file4.c