c语言学习笔记-指针02

  1. 变量定义的判断方法
    优先级最高的运算符 . -> () []
    int *p[5]; / int (p)[5]; / int (p[5]);
    由于[] 的优先级要高于
    所以第一个和第三个都是指针数组,第二个由于使用了小括号,变量先与
    结合,所以该类型是数组指针,即指向一个有五个int型元素的数组的指针
    int (*p)(void); / int *p(void); / int (p[5])(void) / int ((*p)[5])(void)
    第一二个可以明显看出都是函数指针,第三个是一个函数指针数组,第四个是一个指向一个包含五个元素的且元素为函数指针的数组
    由于c语言中函数并不能作为数组元素,所以 int *p,5; / int (*p)5; 这两种写法是不合法的

  2. 函数指针
    函数指针的本质也是指针,只不过指向的对象是一个函数,在c中,函数也就代表一块连续的内存地址,而函数名就是这块地址的起始地址
    通过函数指针,可以完成完成一些很灵活的功能,而写可以实现程序的分层,下层只要实现好各个模块的功能,然后留出接口供上层调用即可
    通过在函数中使用函数指针,可以实现在程序运行过程中实现很多功能,包括回调函数也是函数指针。

  3. typedef
    typedef是定义类型名的关键字,在所需定义的类型比较复杂时,例如定义一个函数指针,就可以使用typedef关键字,增加代码的可读性和便捷性
    typedef和结构体
    在不使用typedef定义结构体时,定义结构体变量不光要使用结构体名还要在前面加上struct定义结构体变量

struct keyword
{
	int firstname;
	int lastname;
	char key;
} 

strcut keyword keworddef;

	如果使用typedef关键字的话,则可以直接在结构体尾部定义结构体类型,而且可以定义多个
typedef struct keyword
{
	int firstname;
	int lastname;
	char key;
} key,*keywords; //结构体变量类型和结构体变量指针类型

key keworddef;
  1. typedef与const
    在使用typedef定义指针类型时,无论是将const加载定义的类型前面还是后面都只能对指针变量产生修饰
    所以如果想在使用typedef定义指针类型时定义指向一个常量的话,要在使用typedef时就将typedef添加进去
  2. typedef在Linux和stm32中的使用
    增加可移植性,通过typedef重定义内建类型(ADT),以避免在更换平台时对应操作位数不等的情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值