函数的调用

别名 (函数的引用)

引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

#include<stdio.h>
void swap(int &a,int &b)
{
	int t;
	t=a;
	a=b;
	b=t;
	printf("%d   %d",a,b);
}
int main()
{
	int a=10,b=20;
	swap(a,b);
    	printf("%d   %d",a,b);
}

同样可以实现swap功能,&a&b相当于a,b的一个别名

形参与实参

函数传值调用

如果直接定义形参void max(int a,int b)那么此函数执行结束后,a,b的值与main函数中a,b在不同内存空间,他们互不影响。

函数的传址调用

1.指针指向的地址当做形参

void max(int *a,int *p)   //define function c
{
}
    //如果是声明函数,其实只要写明类型让电脑知道有这么个类型即可
main()
max(int &a,int &b);    //调用

2.数组名当做形参

#include<stdio.h>
void sort(int x[]);
void main()
{
    int x[5],i;
	for(i=0;i<5;i++)
    {	
		scanf("%d",&x[i]);   //**取数组中单个的元素,尤其注意&这个区地址符千万不能忘**
	}
	sort(x);
	for(i=0;i<5;i++)
		printf("%5d",x[i]);
}

void sort(int x[])
{
	int i,j,t;
	for(i=0;i<4;i++)
		for(j=0;j<4-i;j++)
		{
			if(x[j]>x[j+1])
			{
                 t=x[j];
				 x[j]=x[j+1];
				 x[j+1]=t;
			}
		}
}

二维数组名做实参(字符串数组)

注意:1.形参的行可以不写,但列必须写明列
2.二维数组a[3][78]中。
a[i]表示每一行首地址,由这个地址可利用指针表示每一行的字符串

递归调用

1.用if语句结束循环
2.递归分为 回溯阶段 和递归阶段
3.递归的本质在汉诺塔习题中体现的淋漓尽致,一直通过后一项推前一项,类似于数学数列部分的递推公式。
4.但函数执行效率方面并不尽如人意

注意的部分

1.函数不可嵌套定义
但可以嵌套调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值