結構體中成員的引用


結構體如下:
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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM