結構是一種數據類型,因此它也有對應的結構數組和指向結構的指針。
結構數組
定義結構數組和定義其他類型的數組在語法上并無差別。需要注意的是,在定義結構數組之前,我們必須先定義好這個結構。比如:
struct student
{
int idNumber;
char name[15];
int age;
char department[20];
float gpa;
};
……
student S[3]={ {428004, "Tomato",20, "ComputerScience",84.5},
{428005, "OOTTMA",20, "ComputerScience",85.0},
{428006, "OTA",20, "ComputerScience",89.8}};
……
使用結構數組只要遵循結構和數組使用時的各項規則即可,在此不作贅述。
結構指針
在上一章我們了解到指針的一個重要作用就是實現內存的動態分配(堆內存)。待我們學完了這一章,我們會發現結構指針也是一個非常有用的工具。
所謂結構指針就是指向結構的指針。定義好一個結構之后,定義一個結構指針變量的語法格式為:
結構類型名 *指針變量名;
我們知道一般的指針是通過間接引用操作符“*”來訪問它指向的變量。那么我們如何訪問結構指針所指向的變量的成員數據呢?這里要介紹箭頭操作符“->”,我們用它可以訪問到指針指向的變量的成員數據。它的格式為:
指針變量名->成員數據
需要注意的是,箭頭操作符的左邊一定是一個結構指針,而成員操作符的左邊一定是一個結構變量,兩者不能混淆使用。
下面我們來看一段程序,掌握如何使用結構指針:(程序9.4)
#include "iostream.h"
struct student
{
int idNumber;
char name[15];
int age;
char department[20];
float gpa;
};
void display(student *arg);//結構指針作為函數參數
int main()
{
student s1={428004, "Tomato",20, "ComputerScience",84.5};//初始化結構變量
student *s1ptr=&s1;//定義結構指針變量,并把s1的地址賦值給s1ptr
display(s1ptr);
return 0;
}
void display(student *arg)
{
cout <<"學號:" <<arg->idNumber <<"姓名:" <<arg->name <<"年齡:" <<arg->age <<endl <<"院系:" <<arg->department <<"成績:" <<arg->gpa <<endl;//用箭頭操作符訪問成員數據
}
運行結果:
學號:428004姓名:Tomato年齡:20
院系:ComputerScience成績:84.5