自定义函数:自己定义的函数
以strcpy为例子:
自定义函数一样,需要函数名,返回值类型,函数参数。
函数的组成:
ret_type fun_name(para1, *)
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
举个例子写一个函数可以找出两个整数中的最大值:
int get_max(int x, int y)
{
int z = 0;
if (x > y)
z = x;
else
z = y;
return z;
}
验证下
int main()
{
int a = 0;
int b = 10;
int max = get_max(a, b);
printf("max=%d\n",max);
return 0;
}
举个例子写一个函数可以交换两个整型的内容:
void swap(int x, int y)
{
int z = 0;
z = x;
x = y;
y = z;
}
int main()
{
int a = 20;
int b = 10;
printf("a=%d b=%d\n", a, b);
swap(a, b);
printf("a=%d b=%d\n", a, b);
return 0;
}
试一下!
不好使。这是因为a,b的空间和x,y的空间是独立空间,函数内的空间交换以后函数外的空间没有影响!
所以应该修改代码使用指针:
void swap(int* px, int* py)
{
int z = 0;
z = *px;
*px = *py;
*py = z;
}
int main()
{
int a = 20; //4个字节的空间
int b = 10;
printf("a=%d b=%d\n", a, b);
swap(&a, &b);
printf("a=%d b=%d\n", a, b);
return 0;
}
成功了,也就是说我通过指针的方法,将swap(&a,&b)中的a,b指向函数swap外部的a与b的存储空间之中,使函数执行的操作为*pa和*pb的互换,这样就交换了函数外部变量的存储空间值。
函数中的参数也有分类,在函数调用的时候,swap(&a,&b)中的&a就属于实际参数。
函数创建的时候写的swap(int a,intb)这个int a就是形式参数。