文章目錄
-
-
-
- 結構體嵌套
- 結構體數組
- 初始化結構體數組
- 結構體指針
-
- 指針通路成員方法
-
-
結構體嵌套
比如上篇部落格的代碼
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 結構體名稱 數組名[長度];
初始化結構體數組
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35UeJR0TxUFVPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1EDO1QDO0gTMwETMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
結構體指針
指向結構體變量的指針
struct Book *pt;
我們知道數組名其實是指向數組的第一個元素的位址,是以可以将數組名直接指派給指針變量,但要注意,結構體變量不一樣,結構體變量名并不指向結構體的位址,是以要進行取值,必須要用取址運算符 &。
pt=&book;
指針通路成員方法
1.
(*結構體指針).成員名
2.
結構體指針->成員名
//箭頭隻能用于指針
兩種方法在實作上完全等價
struct Book *pt;
pt=&book;
printf("name: %s\n",(*pt).title);
printf("name: %s\n",pt->title);