一、函数:
1.函数定义的一般形式:
1.1无参函数:
类型标识符 函数名() 如:void printstar( )
{ {
声明部分 printf(“****\n”)
语句部分 }
}
函数类型为void时,意为函数无类型,即无函数值,执行这个函数后不会把任何值带回到main函数。
1.2有参函数
类型标识符 函数名() 如:int max(int x, int y)
{ {
声明部分 int z;
语句部分 z=x>y? x:y;
} return(z);
}
max函数左端的int省略时,默认函数为int型
1.3空函数:预留备用
类型标识符 函数名()
{ }
2.形参和实参:主调函数调用函数时,函数名后面括号内的参数(或者表达式)称为“实际参数”,简称实参;定义函数时函数名后面括号内的变量名称为“形式参数”,简称形参。在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元,在调用结束后,形参所占的内存单元也被释放。在执行一个被调函数时,形参的值如果发生改变,不会改变主调函数中实参的值。
3.局部变量和全局变量:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,这称为“局部变量”。 在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。在不必要的情况下尽量不要使用全局变量。
4. 静态存储和动态存储:静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式。而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。
static声明的静态局部变量:函数中局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量的值为上一次函数调用结束时的值。
static声明的外部变量:只限于本文件引用,不能被其他文件所引用。
extern声明的外部变量:在函数外部定义的全局变量,它的作用域是从变量的定义处开始,程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件结束,如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”,表示该变量是一个已经定义的外部变量。如果一个程序包含两个文件,且都要用到同一个外部变量Num,则应该在任一个文件中定义外部变量Num,而在另一文件中用extern对Num作“外部变量声明”。即“externNum;”。在编译和连接时,系统会由此知道Num是一个已在别处定义的外部变量,并将在另一文件中定义的外部变量的作用域扩展到本文件,在本文件中可以合法地引用外部变量Num。
5.对一个数据的定义,需要指定两种属性:数据类型和存储类别,分别使用两个关键字,如:
static int a; /*静态内部整型变量或静态外部整型变量*/
auto char c; /*自动变量,在函数内定义*/
extern b; /*声明b是一个已被定义的外部变量*/
从不同角度对数据类型进行总结: