前言
前面我们已经介绍了函数的分类、参数、调用,那么这次我们紧接着上节课的内容再了解一下函数的、访问、声明和定义。
1.函数的嵌套调用和来链式访问
函数和函数之间可以根据实际的需求进行组合的,也就是互相调用的。
1.1嵌套调用
当我们要打印一个”hehe“的时候可以这样写
#include<stdio.h> void new_line() { printf("hehe\n"); } int main() { new_line(); return 0; }
那如果我们要打印三个”hehe“呢,该如何实现,下面我们来试着写写看>
void new_line() { printf("hehe\n"); } void three_line() { int i = 0; for (i = 0; i < 3; i++) { new_line(); } } int main() { three_line(); return 0; }
three_line
函数中调用了new_line
,main
函数中又调用了three_line
函数,由此可以看出来函数是可以嵌套调用的,但是不可以嵌套定义!
1.2链式访问
把一个函数的返回值作为另外一个函数的参数。
我们来举个例子演示一下>
int main() { printf("%d\n", strlen("abcdef")); //将strlen的结果以整型形式打印 return 0; }
把strlen
函数的返回值传给printf
函数进行打印,这就是函数的链式访问。
再来看这个代码>
int main() { printf("%d", printf("%d", printf("%d", 43))); //p1 p2 p3 return 0; }在这里插入代码片
这个代码又会输出什么呢?
我们来分析一下:
首先是p1,p1想要打印就要调用p2,p2打印的话就要调用p3,p3的打印结果很好看出来是43,p2打印的结果是什么呢?我们先分析p2打印的是p3函数的返回值,这样子有思路了,我们只需要知道printf函数的返回值就能知道p2打印的结果了,想知道printf的返回值是什么,我们就要用到上节课所提到的工具MSDN(上节课中有下载地址哦)。
我们在MSDN中搜索printf函数>
printf的返回值是int,下面返回值介绍
这些函数返回的是打印字符的个数,如果发生错误则返回负值。
了解了这些,我们就可以知道p2函数打印的内容是p3函数打印的字符数,p1函数打印的则是p2函数打印的字符个数,由此可以得出上面代码打印的结果是4321。
程序走起来我们来看一下结果>
6.函数的声明和定义
6.1函数声明:
- 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数
声明决定不了。- 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
- 函数的声明一般要放在头文件中的。
当我们写出这样的代码的时候
int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); //求和 int ret = Add(a, b); printf("%d\n", ret); return 0; } int Add(int x, int y) { return x + y; }
我们编译一下会发现,有警告⚠
”Add“函数未定义,这是为什么呢?
举个例子:我们平时看书的时候都是一行一行看从上往下看,那么计算机扫描代码也是相同的道理,当扫描到int ret = Add(a, b);,就会报警告说明Add函数未定义,扫描到int Add(int x, int y)时才发现Add函数,但是警告⚠已经报了。
那我们该怎么消除警告呢?
接下来就要用到我们的函数声明了,在main函数前面加上一个int Add(int x, int y);,则表示函数的声明,这是后来编译代码,就不会报出警告了。就相当于告诉计算机,我们有int Add(int x, int y)这么一个函数,再扫描到的时候就不会报出警报了。
2.2函数的定义:
函数的定义是指函数的具体实现,交待函数的功能实现。
Add.h的内容
放置函数的声明
#ifndef __TEST_H__ #define __TEST_H__ #include<stido.h> //函数的声明 int Add(int x, int y); #endif //__TEST_H__
test.c的内容
放置函数的实现
#include"Add.h" int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); //求和 int ret = Add(a, b); printf("%d\n", ret); return 0; }
这样写的话就要在test.c文件中包含头文件#include"Add.h"。
总结
以上就是函数访问、声明、定义的全部内容!有付出才会有收获,”种一棵树的最好时间是十年前,其次是现在。“创作不易,辛苦各位小伙伴们动动小手,三连一波~~~,本文中也有不足之处,欢迎各位随时私信点评指正!