#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//----------------------------------------------------------------------------------------5. 函数的嵌套调用和链式访问
//-----------------------------------------------------------------------------------------------5.1嵌套调用
// 函数和函数之间可以根据实际的需求进行组合,也就是可以相互调用
// 但是不能嵌套定义
/*
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for (i = 1; i <= 3; i++)
{
new_line();
}
}
int main()
{
three_line();
return 0;
}
*/
// 函数 不能 嵌套定义
/*
int Add(int x, int y)
{
return x + y;
int Sub(int x, int y)
{
return x - y;
}
}
*/
//-----------------------------------------------------------------------------------------------5.2 链式访问
// 链式访问 依赖的是函数的返回值
// 链式访问的前提条件是函数要有返回值
#include <string.h>
/*
int main()
{
int len = strlen("abcdef");//求字符串长度
printf("%d\n", len);
//链式访问
printf("%d\n", strlen("abcdef")); // strlen函数本身有个整型的返回值
printf("%d", printf("%d", printf("%d", 43))); //输出 4321
//printf函数返回的值是字符的个数,43是2个字符,打印出2,2是1个字符,又返回1
return 0;
}
*/
//------------------------------------------------------错误示范1:不给返回类型
/*
void test()
{
printf("hehe");
}
int main()
{
int n = test(); //是错误的,因为上边函数 test 没有给返回值
return 0;
}
*/
//-----------------------------------------------------错误示范2::不写返回类型
//函数不写返回类型的时候,默认返回类型是 int
/*
Add(int x, int y) // 不写返回类型,不可取!!!!!
{
return x + y;
}
int main()
{
int a = 1;
int b = 5;
int c = Add(a, b);
printf("%d\n", c);
return 0;
}
*/
//-----------------------------------------------------错误示范3:没有明确返回值
/*
int Add(int x, int y)
{
printf("hehe\n"); //输出 hehe
//printf("%d\n",x+y);
}
//上述代码在一些编译器上返回的是函数执行过程中最后一行指令执行的结果
int main()
{
int a = 1;
int b = 5;
int c = Add(a, b);
printf("%d\n", c); // 输出 5,因为hehe\n 一个5个字符
return 0;
}
*/
//-----------------------------------------------------错误示范4:函数参数不写
/*
void test()
{
printf("hehe\n");
}
int main()
{
test();// hehe
test(100); //hehe
//100传过去没地方接收,写了也不报错,但不推荐写
return 0;
}
*/
明确的说 main 函数不需要参数
本质上main 函数是有参数的
//int main(void)
//{
// return 0;
//}
// main 函数有 3 个参数
int main(int argc, char* argv[], char *envp[])
{
return 0;
}