发布时间:2023-02-08 11:00
单片机学久了,才发现C语言好多地方都不会哎,又得重新翻阅自资料,今天这不有新理解一个东西,分享一下,也作为自己的笔记。
指针:
大概说一下指针基础:指针变量,就是表示一个地址,直接打印这个指针变量,打印出来的就是十六进制的数,表示地址。* 号是取数据符号,可以取出地址里面的数据。& 是取址符,可以取出数据的地址。千万不要被定义指针变量的格式给搞混,定义指针变量就是一种格式(int *b),就是表示b指针变量,不用去管 * 号,这是我混乱的原因。
函数指针与指针函数:
首先从字理解这个两个东西的作用:
int* f(u8 x ,u8 y):指针函数:其实这本身就是一个函数,返回值是指针类型,就叫指针函数;
int (*f)(u8 x,u8 y):函数指针:首先知道这个函数是一个指针,简单说就是一个可以指向函数的一个变量(但是这个变量是一个函数),当有同等类型的函数时就可以直接把这个函数名赋给这个函数指针f。
例子:其他阿函数类型必须和函数指针类一致(返回值类型一致,参数一致)
//加法函数
int add(u8 x ,u8 y)
{
return x+y;
}
//减法函数
int sub(u8 x ,u8 y)
{
return x-y;
}
//定义一个函数指针
int (*f)(u8 x,u8 y);
int main()
{
f=add;//直接把加法函数add赋值给f
f=sub;//直接把减法函数add赋值给f
}