详讲函数.2.

目录

5. 函数的嵌套调用和链式访问

5.1 嵌套调用

5.2 链式访问

小结:

6. 函数的声明和定义

6.1 函数的声明:

6.2 函数的定义:


5. 函数的嵌套调用和链式访问

函数和函数之间可以根据实际的需求进行组合的,也就是互相调用的。

5.1 嵌套调用

 代码如下,我们将代码分装在需要使用时调用函数即可。

void A()//函数A
{
    B();//在定义A函数的时候调用B函数;
}

void B()//函数B
{
    A();//在定义B函数的时候调用A函数;函数可以互相调用
}

int main()
{
    A();
    B();//需要使用时直接调用函数即可
	return 0;
}

但值得注意的一点是:函数可嵌套,但是定义不可嵌套!

下面是嵌套定义的错误示范

void A()
{

void B()
{

}

}


int main()
{

	return 0;
}

5.2 链式访问

把一个函数的返回值作为另外一个函数的参数。

为了方便大家理解,我们举个例子,比如说:打印一串字符的长度

int main() 
{
	int len = strlen("abcdef");
	printf("%d\n", len);

	return 0;
}

这里我们是先将字符长度存放在len里面,然后再将len打印出来。

我们其实可以不把返回值存到len中,而是直接打印,代码如下:

int main() 
{
	printf("%d\n",  strlen("abcdef"));

	return 0;
}

这就是链式访问,我们将上一条的返回值直接充当下一条的参数。

下面我们看一个例子:

int main()
{
	printf("%d", printf("%d", printf("%d", 43)));
	return 0;
}

在这道题中我们在打印了43后还要继续打印,但是我们应该打印什么呢?

在我们不了解函数的情况下,可以进入www.cplusplus.com学习!

 看不懂没关系,我们可以翻译成中文:

 就如上面所说,我们在打印完43后,下一个printf接收到的返回值是2,因为上一个函数有两个字符。打印完2后,下一个只接收到1个字符所以只打印1.

因此,最后结果是4321。

小结:

把一个函数的返回值作为另一个函数的参数就是链式访问。

  

6. 函数的声明和定义

6.1 函数的声明:

  1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。
  2. 函数的声明一般出现在函数使用之前。要满足先声明后使用。
  3. 函数的声明一般要放在头文件中的。(后面会讲为什么放在头文件中)

6.2 函数的定义:

函数的定义是指函数的具体实现,交代函数功能实现。


函数的声明和定义其实和变量相似,我们先举个变量的例子。

 我们可以看到,在函数里我们定义了a后再使用是没问题的。但是如果不小心放到后面:

 我们可以看到它会报错:未声明的标识符;所以,我们在前面声明一下就能解决这个问题:

 

接下来,我们看看函数的例子:

//函数的声明
int Add(int x, int y);

int main()
{
	int a = 10;
	int b = 20;
	int c = Add(a, b);
	printf("%d\n", c);
	return 0;
}

//函数的定义
int Add(int x, int y)
{
	return x + y;
}

值得注意的是,我们一般在写代码的时候不会这样写,这里这样写是为了讲解函数的声明和定义,一般来说我们直接按顺序先写定义,后面要用到的时候就不用声明了。

“函数的声明一般要放在头文件中,函数的定义放在.c文件里面。”

当我们在编写项目时,往往一个程序需要很多程序员一起编写,比如说这个项目需要50个程序员,如果我们把所有的代码都放在同一个test.c文件中,那么50个程序员怎么写呢?轮流写吗?那肯定不行,所以就创建其他的头文件分模块去写。比如说我们要写一个计算器如下图:

 这样让每个人的代码分模块写,最后再让一个人整合其他人的模块,再包含其他人写的代码就可以实现。举个简单的例子:(我这里是用是.cpp文件,当然最好还是用.c文件)

 这样写有一定的好处,一是便于多人协作;二是可读性强;三就是如果我写的代码很重要,不想让别人看到,就可以这样。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值