接上一个笔记)写一个函数,每调用一次这个函数,就会将num值增加1。
void Add(int* pa)
{
(*pa)++; //这里为啥要加上括号?
}
int main()
{
int num = 0;
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
return 0;
}
这里需要将num值改变,所以要传指针。
函数的嵌套调用和链式访问
(定义函数时不能嵌套定义)
函数的嵌套调用:
void test3()
{
printf("hehe\n");
}
void test2()
{
test3();
return 0;
}
int main()
{
test2();
return 0;
}
如此的一串代码被称为函数的嵌套调用
指的是定义新函数时调用定义的另一个新函数,从而达到嵌套调用的作用。
函数的链式访问:
把一个函数的返回值作为另外一个函数的参数。
#include<string.h>
#include<stdio.h>
int main()
{
int len = strlen("abcd");
printf("%d\n", len);
//链式访问
printf("%d\n", strlen("abcd"));
return 0;
}
在这里,strlen()函数的返回值作为了printf()函数的参数,这便是链式访问。
还可以再好玩点:
#include<stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
}
该代码打印出来的值应为4321
首先,先看最后一个printf(),输出43。由于printf()函数的返回值是打印在屏幕上字符的个数,所以最后一个printf()会返回2,以此类推打印2,返回值为1,最后再打印1.
函数的声明和定义
函数的定义就是创造一个函数,交代函数的功能实现
函数的声明则是告诉编译器即将调用的函数叫什么,参数是什么,返回类型是什么
函数的声明一般放在函数使用前。要先声明后使用。
由于编译器是自上而下进行编译的,所以当函数的定义先于函数的调用,则不会出现问题。
一般来说,函数的声明放在头文件中,当要使用时,则调用头文件。
右击项目名称,在属性中的配置类型中改为静态库可以将源文件加密成二进制,当需要使用时需加上如下代码:
#pragma comment(lib,"xxx.lib")