【C++之对象数组和对象指针1】输出第1,3,5个学生的数据

简介: 【C++之对象数组和对象指针1】输出第1,3,5个学生的数据

题目要求


建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。


——谭浩强的《C++面向对象程序设计》第3章习题第4小题


对象数组


在一个对象数组中各个元素都是同类对象。

本题中,要求存放的学生数据均包含学号和成绩,因此可以建立一个数组,包含5个元素,代表5个学生,每个学生具有学号和成绩的属性。


在建立数组时,同时要调用构造函数。如果构造函数有多个参数,在定义对象数组时,需要在花括号中分别写出构造函数名并在括号内指定实参,以实现对象数组初始化。


定义对象数组并初始化的格式为:


Student stu[n]={
student(实参0-1,实参0-2,实参0-3),
… …
student(实参n-1,实参n-2,实参n-3)
};


对象指针


本题中,需要用指针指向数组首元素,也就是用指针指向对象的起始地址。


首先需要定义一个类对象:


类名 对象名;


然后定义一个指针变量,用来指向该类对象。

定义对象的指针变量的格式:


类名 * 指针变量名;


最后用取址运算 (&) 来获取对象的起始地址:


指针变量名 = &对象名;


后两步可以简化为:


类名 * 指针变量名 = 对象名;


程序


student.h


/*
************************************************************************
@file:    student.h
@date:   2020.11.6
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109445470
************************************************************************
*/
#include <iostream>
using namespace std;
class Student // 声明类类型
{
private: // 声明私有部分
  int num;   // 学号
  int score;       // 成绩
public: // 声明公用部分
  Student(int n, int s) : num(n), score(s) {}; // 定义带参数的构造函数,并用参数的初始化表对数据成员初始化
  void display(); // 输出学生的学号和成绩数据
};


student.cpp


/*
************************************************************************
@file:    student.cpp
@date:   2020.11.6
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109445470
************************************************************************
*/
#include"student.h"
// 类外定义成员函数
void Student::display() // 成员函数定义,返回长方柱的体积
{
  cout << "num:" << num << endl;
  cout << "score:" << score << endl;
}


main.cpp


/*
************************************************************************
@file:    main.cpp
@date:   2020.11.6
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109445470
************************************************************************
*/
#include "student.h"
int main()
{
  Student stu[5] = {
  Student(8, 100),
  Student(9, 100),
  Student(10, 100),
  Student(11, 100),
  Student(12, 100)
  };
  // 定义对象数组
  Student *p; // 定义p为指向Student类对象的指针变量
  p = stu;    // 将stu的起始地址赋给p
  // 或:Student *p = stu;
  for (int i = 0; i <= 2 ;i ++)
  {
  p -> display(); // 调用p所指向的对象中的display函数,即stu.display
  p = p + 2; // 间隔一个学生,取数据
  }
  system("pause");
  return 0;
}


运行结果



输出:

num:8

score:100

num:10

score:100

num:12

score:100


相关文章
|
6天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
18 3
|
1天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
10 4
|
5天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
12 2
|
17天前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
14天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
23 1
|
23天前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
23天前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
23天前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
24天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
22 4
|
24天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
20 4