今天介绍函数的嵌套调用和链式访问
目录
一个函数是可以在其它函数中使用的,但是首先要声明它,计算机是从上到下读取代码的,如果你的函数写到了下面,但是你的引用时把它调用了,此时就要声明了,下面请看例子,我没有写声明,因为我写代码的习惯就是把函数放在上面,顺序写出
这是一个函数调用函数的
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void y_1()
{
printf("命运\n");
}
void y_2()
{
return y_1();
}
void y_3()
{
return y_2();
}//自定义三个函数
int main(void)
{
y_3();//输出
return 0;
}
这是函数内部连续的,大家可以算算最后结果为多少
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int y_4(int* x)
{
*x = 50;
return *x;
}
int main(void)
{
int y = 0;
y_4(&y);//实参改变需取地址
printf("%d", printf("%d", printf("%d", printf("%d", y))));//嵌套使用
//输出结果,如果printf打印出整数,则下一个printf就会打印出屏幕上数字的个数
return 0;
}
库函数的实现
这是一个打印字符串的函数,但是我试了快1个半小时,除了库函数没办法打印了吗,自写函数无法实现打印,果然群友是万能的
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void)
{
char ch1[20] = { 0 };//空数组
char ch2[] = "hello";//一个字符串
strlen(ch2);//计算字符串长度
printf("%s %s\n", ch1, ch2);
strcpy(ch1, ch2);//打印
printf("%s\n", ch1);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
char b_j(char* x, char* y)
{
char *a = x;//定义一个地址变量,因为函数的生命周期是函数本身,将y取x的值赋给地址a
while ((*x++ = *y++) != '\0');//因为字符串后面默认带\0,所以不等于\0,地址加一赋值
return *a;//输出字符串地址a
}
int main(void)
{
char ch1[20] = { 0 };//空数组
char ch2[] = "hello";//一个字符串
strlen(ch2);//计算字符串长度
printf("%s %s\n", ch1, ch2);
b_j(ch1, ch2);
//strcpy(ch1, ch2);//打印
printf("%s\n", ch1);
return 0;
}