理论教育 指针的使用及应用场景:访问变量、数组、结构和中断函数

指针的使用及应用场景:访问变量、数组、结构和中断函数

时间:2023-06-15 理论教育 版权反馈
【摘要】:可以用指针的方法访问变量,用指针访问数组、结构、联合变量非常方便。地址&PieVectTableInit被强制转换为void类型。例如,描述中断向量表的指针PINT结构PIE_VECT_TABLE的所有成员均为中断函数的首地址,即指向中断函数的指针。因此,在定义其成员如PIE1_RESERVED的时候,要在其前面加PINT,表示PIE1_RESERVED是PINT类型的变量,即指向中断函数的指针,这样程序显得简洁。C语言中访问片内外数据存储器,可以用指针的方法实现。例4-3 将DSP的数据存储器400H开始的16个单元复制到500H开始的单元。

指针的使用及应用场景:访问变量、数组、结构和中断函数

可以用指针(Pointer)的方法访问变量,用指针访问数组、结构、联合变量非常方便。例如,指向结构类型的指针变量p,

struct GPDMUX_BITS ∗p; //声明一个指向结构GPDMUX_BITS的指针p

struct GPDMUX_BITS bit; //声明一个结构GPDMUX_BITS类型的变量bit

p=&bit; //结构指针p指向变量bit

结构变量bit的成员T1CTRIP_PDPA_GPIOD0可用下述3种形式之一访问:

bit.T1CTRIP_PDPA_GPIOD0 //用结构变量点运算符的方法访问

(∗p).T1CTRIP_PDPA_GPIOD0//用间接访问运算符指针和点运算符访问

p->T1CTRIP_PDPA_GPIOD0//用指针指向(箭头运算符)成员变量(www.daowen.com)

ANSI C新标准增加了一种void∗指针类型,即可以定义一个指针变量,但不指定它是指向哪一种数据类型,例如

unsigned long∗Source=(void∗)&PieVectTableInit;

其中PieVectTableInit是结构PIE_VECT_TABLE(中断向量)的一个变量。地址&PieVectTableInit被(void∗)强制转换为void∗类型。指针Source指向unsigned long类型。

例如,描述中断向量表的指针PINT

结构PIE_VECT_TABLE的所有成员均为中断函数的首地址(中断向量),即指向中断函数的指针。因此,在定义其成员如PIE1_RESERVED的时候,要在其前面加PINT,表示PIE1_RESERVED是PINT类型的变量,即指向中断函数的指针,这样程序显得简洁。

C语言中访问片内外数据存储器(或外设寄存器),可以用指针的方法实现。下面举例说明。

例4-3 将DSP的数据存储器400H开始的16个单元复制到500H开始的单元。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈