天天看點

結構體數組和結構體指針

文章目錄

        • 結構體嵌套
        • 結構體數組
        • 初始化結構體數組
        • 結構體指針
          • 指針通路成員方法

結構體嵌套

比如上篇部落格的代碼

struct Book
{
    char title[128];
    char author[40];
    float price;
    unsigned int date;
    char publisher[40];
    
};
           

可以把date單獨再定義成一個結構體

struct Date
{
int year;
int month;
int day;
};
struct Book
{
    char title[128];
    char author[40];
    float price;
    struct Date date;//别忘記了struct這個字首
    char publisher[40];
    
}book={"dainixue","yuyijie",48.8,{2017,1,1},"jiangsudaxue"};//這裡直接初始化



printf("date is: %d-%d-%d\n",book.date.year,book.date.month,book.date.day);
           

結構體數組

每個數組都是一個結構體的資料

定義方法:

1.在聲明結構體的時候進行定義

struct 結構體名稱
{
成員;
}數組名[長度];
           

2.先聲明一個結構體類型,再用此類型定義一個結構體數組

struct 結構體名稱
{
結構體成員;
};
struct 結構體名稱 數組名[長度];
           

初始化結構體數組

結構體數組和結構體指針

結構體指針

指向結構體變量的指針

struct Book *pt;

我們知道數組名其實是指向數組的第一個元素的位址,是以可以将數組名直接指派給指針變量,但要注意,結構體變量不一樣,結構體變量名并不指向結構體的位址,是以要進行取值,必須要用取址運算符 &。

pt=&book;

指針通路成員方法

1.

(*結構體指針).成員名

2.

結構體指針->成員名

//箭頭隻能用于指針

兩種方法在實作上完全等價

struct Book *pt;
pt=&book;
printf("name: %s\n",(*pt).title);
printf("name: %s\n",pt->title);
           

繼續閱讀