结构体中成员的引用

结构体如下:
struct student
{
int num;
char name[20];
char sex;
float score;
};

1. 结构体的初始化

   struct student aa = {1001, "zhang", 'M', 80, 5};

2. 引用整个结构体

   struct student *p = &aa; //p指向aa这个结构体的首地址

3.结构体中,字符数组的引用

   char *q = aa.name;  //q指向 "zhang" 。因为 "zhang" 本身已经是字符数组, 所以在指向他时,不需要再加一个 “&”

4.结构体中,普通类型的引用

   int *r= &aa.num;  // r 指向 1001 的地址

   char *s= &aa.sex; // r 指向 'M' 的地址

5. 

因为有了p指向aa, 所以在引用aa的成员时, aa.num 和 p->num是等价的,和 (*p).num也是等价的

即  aa.num  ,   p->num,   (*p).num  均指向 name  

6.

结构体数组

struct student sru[3] =
{
{1001, "zhang", 'M', 60.5},
{1002, "peng", 'M', 100},
{1003, "Wang", 'W', 90.9}
}


struct struct *p = stu;

如果此时,我们想访问数组中第一个元素的name, 即 "zhang".
有三种方法:
A) 直接访问数组stu
    stu[0].name;

B) 用指针p访问数组stu
    因为p已经指向了stu, 所有不能再用"."来访问了,应该用"->"
    p->name;

C) 接B,也可以写成(*p).name;


以此类推,如果想访问数组中第二个元素的name, 即 "peng".
有三种方法:
C) 直接访问数组stu
    stu[1].name;

D) 用指针p访问数组stu
    (p+1)->name;
    注意,因为+1是一个四级运算符,所以必须先用括号括起来

E) 接D,也可以写成(*p).name;
    (*(p+1)).name;

 

  • 16
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值