5.3.2 指针与结构(数组)
可以使用指向结构数据的指针访问结构变量。定义结构:
定义一个该结构类型的变量:
struct info myinfo;
定义一个指向info结构的指针:
struct info *p_info;
p_info指向结构变量myinfo:
p_info = &myinfo;
如图5.3.3所示,说明了结构和指向结构的指针之间的关系。
图5.3.3 指向结构的指针
当p_info指向了结构变量myinfo后,*p_info就代表了myinfo。通过p_info,可有两种方式引用结构变量myinfo的成员。
1)使用结构成员选择运算符(.),如
注意:由于结构成员选择运算符(.)的优先级比间接运算符(*)高,因此必须用圆括号将*p_info括起来。
2)使用结构成员选择运算符(−>),如
因此,有三种存取结构成员的方式:
1)通过结构变量名。
2)通过指向结构的指针和成员选择运算符(.)。
3)通过指向结构的指针和成员选择运算符(−>)。
如果p_info是指向结构变量myinfo的指针,则下面的三种访问方式是等价的:
可以将指针和结构数组两者结合起来使用,通过指针来存取结构数组中元素及各元素的成员。将第4章例4.8简化后用指针处理。
例5-8 输入同学的信息,并按身高从低到高排序;输出姓名、生日和身高。
注意:在程序运行到第42行结束后,p_stu已经移到了数组stu的末尾。所以,在第62行要使p_stu重新指向数组的开头元素stu[1]。
常见的编程错误5.3
●对不是指向数组的指针进行算术运算,是一个逻辑错误。
●将两个不是指向同一数组的指针相减或进行关系比较,是一个逻辑错误。
●使用指针算术运算对指针进行自增或自减,以致该指针引用超出数组边界的元素,通常会形成一个逻辑错误。
常见的编程错误5.4
●将一个类型的指针赋予另一个类型的指针,需要进行强制类型转换。
常见的编程错误5.5
●数组名是指针常量,不能对数组名进行赋值修改。
良好的编程习惯5.2
●为了使程序清晰,在操作数组时,通常使用数组表示法(不使用指针表示法)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。