#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <windows.h>
//写一个函数,每调用一次函数,num的值就会加一。
//void ADD(int* p)
//{
// (*p)++;
//}
//
//int main()
//{
// int num = 0;
// //每调用一次函数,num的值+1。
// ADD(&num);//外部函数要改变程序内部的变量的值,必须取地址。进行取址调用。
// printf("%d\n", num);
//
// ADD(&num);
// printf("%d\n", num);
//
// ADD(&num);
// printf("%d\n", num);
//
// ADD(&num);
// printf("%d\n", num);
// return 0;
//}
//函数的嵌套调用
函数可以嵌套调用,但是不能嵌套定义。比如在test1函数内再定义一个test3函数。但是可以在test2函数内调用test1函数。
//int test1(int d)
//{
// int e = 6;
// return d + e;
//}
//
//int test2(int f)
//{
// int g = 0;
// g = test1(f)+10;//此处属于嵌套调用test1函数。得到一个16,再加十,得到g=26,然后返回到程序内。
// return g;
//}
//int main()
//{
// int a = 10;
// int b = 0;
// b = test2(a);
// printf("%d\n", b);//输出值为26.
// return 0;
//}
//函数的链式访问:
//int main()
//{
// int a = 0;
//
// a = strlen("abc");
//
// printf("%d\n", a);
//
// //strlen可以直接放进printf中使用。
// //把一个函数的返回值作为另一个函数的参数,这叫做函数的链式访问。
// printf("%d\n", strlen("abc"));
//
// //再举一个简单的例子:
// char arr1[20] = { 0 };
//
// char arr2[] = "hello world";
//
// strcpy(arr1, arr2);
//
// printf("%s\n", arr1);//此处打印为“hello world”。
//
// printf("%s\n", strcpy(arr2, arr1));//此处打印也为“hello world”。
//
//
// //一个有趣的函数式:
//
// printf("%d", printf("%d", printf("%d", 43)));//请问此处应该打印什么数值?
//
// //答案是4321,因为printf:这些函数中的每一个都返回打印的字符数,如果发生错误则返回负值。43打印的字符数为2,所以返回值为2,2打印的字符数为1,所以返回值为1,最后打印出来的数值为4321.
//
// return 0;
//}
//
//int main()
//{
// int a = 2;
// int b = 4;
//
// //函数的声明:
// //1、函数的声明:告诉编译器有一个函数叫什么,参数是什么,返回类型是什么,但是具体存不存在,无关紧要;
// //2、函数的声明一般出现在函数的使用之前,要满足先声明后使用;
// //函数的声明一般要放在头文件中的。
// // 如果函数的定义放在程序前面,就不要进行声明。
//
// int ADD(int, int);//此处告诉编译器有一个函数名字叫ADD,参数是int类型,返回类型是int类型,
//
// int c = ADD(a, b);//此处再对函数进行引用。
// printf("%d\n", c);
// return 0;
//}
//
//
函数的定义:函数的定义是指函数的具体实现,交代函数的功能实现。
此处对函数进行定义:
//int ADD(int x, int y)
//{
// return x + y;
//}
//引用头文件:
#include "addsub.h"
//#include "add.h"
//#include "sub.h"
//如果想隐藏源文件中的代码,不想给其他人看到,可以使用编译器将源文件编译为静态库,然后再引用静态库即可。
//比如此处add.h和sub.h所对应的add.c和sub.c.可以使用静态库调用来实现隐藏代码的作用。
#pragma comment(lib,"add.lib")//静态库调用代码,此时add.lib在文件夹中。add.lib文件是无法直接打开查看的,只能通过代码进行调用,防止代码被其他人看到。
int main()
{
int a = 20;
int b = 10;
int c = add(a, b);
int d = sub(a, b);
printf("%d\n%d\n", c, d);
return 0;
}
//alt+enter可打开属性页