C语言学习--函数
函数的作用:(1) 提高代码的复用率; (2)提高程序的模块性
函数的分类:
(1)系统库函数, 标准c库: 导入头文件--声明函数 , 根据函数原型调用
(2)用户自定义
函数定义:
包含函数原型:返回值类型, 函数名,形参列表, 函数体(大括号一对,具体代码实现)
int add(int a, int b, int c) : int a 就是形参
函数调用:
包含函数名(实参列表),在调用时候,传参必须严格按照形参格式填充, 即参数的个数, 类型, 顺序都必须一致
int a = add(4,28);
函数声明:要求在函数调用之前, 编译器必须见过函数定义。 负责, 需要函数声明
包含 函数原型(返回值类型, 函数名,形参列表)+“;”
隐式声明, 如果在调用函数的时候, 编译器在此之前没有找到这个函数的定义, 就会自动做隐式声明
隐式声明的格式是这样的: 返回值类型都是int吗,根据调用的语句, 自动补全函数名和形参列表。【不要依赖隐式声明】
#include<stdio.h> int main(void) { int result; result = add(1,2);// 编译器会自动声明函数 int add(int a, int b); 这就是函数原型, 隐式声明, 默认都是声明成int 函数, 所以如果下面的函数是void add(), 那声明就会出错 printf("the add result is %d\n", result); } int add(int a, int b) { int result; result = a + b; return result; }
the add result is 3
这种情况下, 也能运行成功
但是如果把int add( ) 变成void add(),上面的code 就会出错
这里的type冲突是因为, 函数隐式声明会把add 函数变成int 型, 但是自己的code 没有声明, 写的是float, 所以会冲突
#include<stdio.h> int add(int a , int b); //函数声明, 函数原型+; int main(void) { int result; result = add(1,2); printf("the add result is %d\n", result); } int add(int a, int b)//这是函数原型 { int result; result = a + b; return result; }
the add result is 3