1.函数的定义、函数的调用、函数的声明
2.函数的定义不能嵌套,函数的调用能嵌套
3.实参,形参
4.形参所占的内存在函数调用结束之后被释放,即形参值没了
5.(1)实参传给形参是单向的传递,“值传递”
即函数调用时,实参传给形参后,调用结束形参释放,而实参保持原来的值,
所以形参的改变不能改变实参的值
#include <stdio.h>
main()
{int swap(int a,int b);
int x=7,y=11;
printf("x=%d,\ty=%d\n",x,y);
printf("swapped:\n");
swap(x,y);
printf("x=%d,\ty=%d\n",x,y);
}
int swap(int a,int b)
{ int temp;
temp=a; a=b; b=temp;
}
结果:x=7,y=11
x=7,y=11
虽然形参的值进行了交换,但只传递是单向的
(2)地址的传递,是双向的传递
#include<stdio.h>
int swap(int *p1,int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
main()
{int a,b;
scanf("%d,%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
printf("swapped:\n");
if(a<b) swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
结果:1 2
a=1,b=2
a=2,b=1
6.函数的递归调用(调用函数是直接或间接的调用函数自己本身)
7.内部函数(只能被本文件的函数调用的函数,在定义是加staic)
8.外部函数(在函数的最左端加extern,可以省略)