(1)C语言的基本单位就是函数。C语言程序是由一个个函数组成。Java、C++、C#等面向对象语言的基本单位是类。
(2)为什么需要函数:使用函数,避免了重复性操作,有利于程序的【模块化】。
(3)C语言中的函数是面向过程的函数,与面向对象中的函数不同。
(4)函数是一个工具,是为解决大量的同一类型的问题而设计的。
(5)如printf和scanf等都是系统定义的函数工具。
(6)在函数的设计中,函数的功能要尽量单一,以便进行不同目的时多次引用。
(7)函数的参数个数尽量不要超过5个。
(8)在函数的设计中,函数模块的功能尽可能独立化,提高代码的利用率。如:判断类函数可设计为布尔型。
每个程序代码必有其局限性,应取最优化。
(9)当函数较难理解时,可在注释中写明函数的功能。
(10)函数名相同,形参不同,也不是同一个函数。
1.定义函数:
函数的返回值类型+函数名(形参类型+形参) //返回值类型除常用类型外,也可以为void,即返回值为空。(注意:返
{ 回值为空并不代表返回0,而是返回空值。)
函数的执行体;
return+表达式;
}
return+返回值;return后跟的返回值即为整个函数的值。
如:
voidmax(int i, int j) //max是函数名,int是形参类型,i和j是形式参数(形参),以接收实参传值void表示函数没
{ 有返回值。
if(i > j)
printf("%d\n",i);
else
printf("%d\n",j);
}
在函数引用时:
max(a,b) //max是引用max函数,括号内的a,b是实参,将a,b的值发送给max函数的形参,实参形参一一对应。
引用函数完毕后,为函数形参i,j分配的内存空间会被释放掉。
又如常用的main函数:int main(void) //int代表函数返回值的类型,main是函数名,void代表此函数不接收任何值。
2.函数的类型:
函数返回值的类型也称为函数的类型,即为定义时函数名前的类型。
如果函数返回值的类型与定义类型不同,则以函数名前的定义类型为准。
如: intf(void)
{
return10.5; //只会返回整型数字10,而不是10.5。
}
布尔类型:bool其返回值为布尔型,即true和false,也就是函数的值为true或false。
if()
returntrue;
else
returnfalse;
3.break与return的区别:
break用于终止for循环或switch;
return用于终止整个函数。return后跟值终止被调函数并将此值返回给主调函数,当函数定义类型为void时,如果需要用
return,那么return后不能写值,则此时return只终止被调函数。
voidf(void)
{
inti;
for(i=0;i<5; i++)
{
printf("呵呵!\n");
break; //break用于终止for循环。
}
return; //return用于终止整个函数。
printf("哈哈!\n");
}
4.函数的声明:
当函数定义位于函数调用之后时,编译器先编译主函数中调用语句而被调函数没有编译,不能识别导致出错。
所以需要函数的声明。函数的声明需位于主函数的前面以便被编译器先编译识别。
注意:函数的声明需要与后面被声明的函数形式相一致。
但函数的声明一般不需要加形参字母
即:void swap(int, int)
函数的前置声明:
1.告诉编译器即将可能出现的若干个字母代表的是一个函数;
2.告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的个体情况;
3.函数声明是一个语句,末尾必须加分号;
4.对库函数的声明是通过# include <库函数所在文件的名字.h>来实现的。
如:
#include <stdio.h>
voidf(void); //函数的声明,即声明f是一个函数,注意:声明是一个语句,后有分号。
intmain(void)
{
f();
return0;
}
voidf(void)
{
printf("哈哈!\n");
}
注意:
主函数(即为main函数)与普通函数
一个程序必须有且只能有一个主函数,主函数可以调用普通函数,但普通函数不能调用主函数;
普通函数可以相互调用;
主函数是程序的入口,也是程序的出口。
虽然主函数(main函数)是程序的入口,但编译器是从上往下编译的。
编译顺序:从头到main函数编译,main函数结束后,程序即结束,main函数后的语句如果没有前置则不会被编译
实参与形参:
实参传递(复制/赋值)给形参,C语言中传递方式有两种:值传递、地址传递
C++中传递方式有三种:值传递、地址传递和引用传递。
实参与形参的个数、位置和类型必须一一对应。
实参与形参的传递:复制、赋值。
变量的分类:
按作用域分:
1.全局变量(Public)
在函数外部定义的变量。
2.局部变量(Private)
在函数内部定义的变量及函数的形参。
注意1:如要定义全局变量,应定义在头文件中,虽然主函数(main函数)是程序的入口,但编译器是
从上往下编译的。即如果全局变量定义在调用函数之后,则不能被编译识别而报错。
注意2:全局变量名与局部变量名冲突的问题,当全局变量名与局部变量名相同时,会默认采用局部变 量,即局部变量(Private)优先级>全局变量(Public)。
按存储方式分:
1.静态变量(static)
2.自动变量(auto int等)
3.寄存器变量(register)
4.局外变量(extern)