首页 > 编程 > C++ > 正文

C++教程:C++结构数组与结构指针

2020-05-23 14:26:58
字体:
来源:转载
供稿:网友
结构是一种数据类型,因此它也有对应的结构数组和指向结构的指针。

结构数组

定义结构数组和定义其他类型的数组在语法上并无差别。需要注意的是,在定义结构数组之前,我们必须先定义好这个结构。比如:
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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表