文件名称:指针变量的运算-《迈向5g-c-ran:需求、架构与挑战》白皮书
文件大小:3.35MB
文件格式:PDF
更新时间:2024-06-22 11:06:48
TMS320F281x_DSP原理及应用实例
的内容是另一个变量的地址。 一、指针变量的定义 指针变量在使用前必须对其进行定义,一般形式为: 类型标识符 *指针变量名 1,*指针变量名 2… ; 例如:int *p; 其中 int 用来说明该指针 p 是用来指向整型变量,即在地址 p 中存放的数是一个整型数, *用来说明 p 是一个指针。 注意,p 变量本身也需要空间来存放其内容,一个指针变量究竟要占用多少字的空间来 表示取决于编译系统,例如大存储模式下指针变量占两个字。 指针变量也是一种数据类型,习惯上把指针变量简称为“指针”。 二、指针变量的运算 可以通过地址运算符“&”获得地址值。“&”是单目运算符,利用该符号可以把一个 变量的地址赋给指针变量。其格式为: &标识符 其中标识符可以是变量、数组名等。上式的运算结果是一个地址值,例: int I=3,*p,*q; 则“p=&I;”语句表示把变量 I 的地址赋给指针,其后的“q=p;”语句表示把 p 中的内 容,即 I 变量的地址也赋给 q,因此执行完这两个语句后,p 和 q 中的内容都为 I 的地址, 或者说指针 p 和 q 都指向了 I。 指针可以移动,即可以对指针进行自增自减运算,或通过赋值运算加上或减去一个整数, 使指针变量指向相邻的单元。 不同的指针之间可以进行比较,比较的意义在于判断同一数据集合中元素的位置关系。 可以通过间接访问运算符“*”来访问一个地址,例如: int *p,I=3,j; p=&I; j=*p; 上例中,“int *p”中的“*”用于指针变量定义,是说明 p 是一个指针变量。而“j=*p;” 语句中的“*”是间接访问运算符,意味着取指针变量 p 所指向变量的内容,执行完该句后 j=3。 间接访问运算符“*”必须出现在运算对象的左面,运算对象必须是地址或指针,例: j=*&I;或 j=*p; 运算符&和*优先级相同,且自右向左结合。 三、函数型指针 一个函数被执行时,在程序空间中占据一定空间,这个空间的起始地址是用函数名来表 示的,称为函数的入口地址。也可以用指针指向这个入口地址,并通过该指针变量来调用这 个函数。这种指针变量称为函数型指针变量,其一般形式为: 数据类型标识符 (*指针变量名) () ; 例如:int (*f)( ); 上式定义了指针 f, f 指向的函数返回整型类数据。注意其中(*f)中的括弧不可缺少,标 识 f 是先与*结合,是指针变量,然后再与后面的()结合,表示此指针指向函数。 187