C语言秃头笔记--函数的嵌套调用和链式访问

 嵌套调用

 

这里我们运用一个代码来了解嵌套调用

#include <stdio.h>

void new_line()

{

 printf("csdn\n");

}

void three_line()

{

 int i = 0;

 for(i=0; i<3; i++)

   {

        new_line();

   }

}

int main()

{

 three_line();

 return 0;

}

首先我们在主函数中调用three_line,然后我们来到three_line中,发现定义了一个变量i,然后有一个for循环,i = 0,而循环 < 3,表示循环执行三次,进入循环,发现要调用new_line函数,我们进入new_line函数,打印csdn,因为three_line要执行三次,所以最后结果应该是

csdn

csdn

csdn

 

这就是函数的嵌套调用

(函数可以嵌套调用但不能嵌套定义)

 

链式访问

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

这里我们先看一个函数

#include <stdio.h>

#include <string.h>

int main()

{

    char arr[20] = "hello";

 int ret = strlen(strcat(arr,"bit"));//strlen计算字符串长度

 printf("%d\n", ret);

 return 0;

}

这里我们要求计算arr的字符串长度,并打印相应的结果

我们发现在这个程序中,我们可以省去定义ret,直接把strlen的结果传给printf得到的结果也是一样的,即:

 

#include <stdio.h>

#include <string.h>

int main()

{

  char arr[20] = "hello";

 printf("%d\n",strlen(strcat(arr,"bit")) );

 return 0;

}

 

这就是链式访问,

我们直接把strlen的返回值作为printf的参数打印出来

 

我们接下来看另一个例子:

 

#include <stdio.h>

int main()

{

    printf("%d", printf("%d", printf("%d", 43)));

    //结果是啥?

    //注:printf函数的返回值是打印在屏幕上字符的个数

    return 0;

}

我们要求第一个printf打印第二个printf的返回值,而第二个printf里要求打印了第三个printf的返回值,而第三个printf要求打印43,那么这是的结果是啥?

这是一个典型的链式访问

要做这一题我们首先要了解printf,即上面的注释:

printf函数的返回值是打印在屏幕上字符的个数

(注:我们这只是简单的了解,具体可以自己私下去MSDN等软件或网站查看)

 

然后我们来看题目,我们想要打印第一个printf的整形值,首先我们需要知道第二个printf的返回值,而第二个printf的返回值,需要第三个printf的整形值,所以我们首先打印第三个printf的值43,刚刚我们了解到printf返回值是打印屏幕上字符的个数,所以第二个printf应该打印2,这是第一个printf就应该打印1,因为第二个printf的返回值是2,只有一位

所以我们程序的最后结果为:

4321

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值