知识点一:函数的概述
-
函数的定义:实现函数功能、确定函数体、返回值类型、形参类型。让函数存在
-
函数的声明:不是实现函数功能仅仅是说明该函数有返回值类型、形参类型、函数名
-
函数的调用:函数的执行
1、函数的定义
//返回值类型:函数将来返回值的类型
//函数名:函数的入口地址
//形参:函数外部数据 传递到 函数内部的 桥梁
//函数体:具体的函数功能带
返回值类型 函数名(形参类型 形参) //形参可以不止一个
{
函数体;
}
2、函数声明
返回值类型 函数名(形参类型 形参); //形参可以不止一个
3、函数调用
//函数外部实际数据
函数名(实参);
#include<stdio.h>
//函数声明:告诉编译器该函数存在请通过编译。
void myfun();
int main(int argc,char *agrv[])
{
//函数的调用:函数名+()
myfun();
return 0;
}
//函数的定义
void myfun()
{
printf("my fun\n");
return;
}
只有函数的
调用在函数定义的下方(不推荐),才可以不函数声明
#include<stdio.h>
//函数的定义
void my_fun()
{
printf("my fun\n");
return;
}
int main(int argc,char *argv[])
{
//函数的调用:函数名+()
my_fun();
return 0;
}
知识点二:函数参数
如果函数没有参数需要将 形参 写成 void
函数参数传递
-
函数形参本质:函数局部变量
-
形参在函数
定义的时候不会开辟空间,只在函数调用的时候才开辟空间 -
形参在函数结束的时候才被释放
-
函数名代表的是函数的入口地址 -
函数返回值:
-
<=4 字节存放
寄存器 -
大于4 字节存放
栈区
-
#include<stdio.h>
int my_add(int a, int b);
int main(int argc,char *argv[])
{
int data1 = 10, data2 = 20;
//需求:请定义一个函数 计算data1+data2
int ret = my_add(data1,data2); //data1 data2 实参
printf("ret = %d\n",ret); //30
return 0;
}
int my_add(int a, int b) //a b 形参
{
return a+b;
}
知识点三:内联函数
将项目中某些常用的简单逻辑的函数申请为内联函数,在编译之前,就会将主调函数中调用该内联函数的位置,直接替换为该函数体的内容,再进行编译,这样就省去了运行时,调用函数的CPU开销时间,大大的提升程序的执行效率。
大小端(字节序):
大端:高字节存放在低地址
小端:高字节存放在高地址