函数
头文件的使用
#include
就是简单的文本内容替换
#define
(宏)就是简单的文本替换
头文件ab.h
#ifndef _AB_//如果没有_AB_这个宏,那么就编译#endif之间的这些代码,如果有的话就不编译。
#define _AB_//具体宏的名字是自定义的
int max();
int add();
#endif
防止多次include的同一个头文件的时候,重复预编译头文件内容。
#ifndef的意思就是条件预编译,如果#ifndef后面的条件成立,那么久预编译从#ifndef来时到#endif之间的代码,否则不回去预编译这段代码。
C语言的方法:调用库函数,用户自定义函数。
用户自定义的函数
函数的定义:
#include <stdio.h>
int max(int x,int y);//函数的声明
int main(int argc,char *argv[]){
int a =max(35,56);//函数的入口,35,56为实参,实参可以是变量也可以是常量或者是表达式(35-1,56-2)。
printf("max=%d\n",a);
return 0;
}
//用户自定义函数体
int max(int x,int y){
//int x,int y为形参,形参必须是变量,不能是常量或表达式)。
int c=(x>y)?x:y;
return c;//返回值,返回值的类型一定要和函数定义类型统一。
}
-如果函数体写在主函数后面,在main()函数必须声明。函数体在main()前面,是提前定义,不用声明。
-实参和形参类型必须严格匹配。
-函数可以没有返回值,函数的返回类型是void
-如果C语言一个函数没有明确的表明函数的返回类型,那么函数的返回类型就是int,(劲量写出来)
-在c语言中,实参与形参的数据传递是“值传递”,即单向传递,只由实参传递给形参,而不能由形参传递给实参。
#include <stdio.h>
void test(int x);
int main(int argc,char *argv[]){
int value=10;
test(value);
printf("value=%d\n",value);
return 0;
}
void test(int x){
x++;
}
/Users/Xx/CLionProjects/Struct1/cmake-build-debug/Struct1
value=10
Process finished with exit code 0
如果函数的参数是数组:
#include <stdio.h>
void test(char s[]);
int main(int argc,char *argv[])