无论如何,在课程结束时有没有工作的数组?

时间:2019-06-07 14:29:04

标签: c++

我在课程结束时得到了一个数组,我不知道如何使用它。

公共汽车[10]很难理解。我不知道为什么它可以访问驱动程序,empty()函数真正起什么作用。

#include "conio.h"
#include "stdio.h"
#include "iostream.h"
#include "string.h"
#include "graphics.h"
#include "stdlib.h"
#include "dos.h"
static int p=0;
class a
{
        char driver[10];// driver
    public:
        void install();// for installing

}bus[10];//here we declare the number of buses we can have.
void a::install()
{
    cout<<"Enter bus no: ";//ques
    cin >> bus[p].driver;// what does this mean
    bus[p].empty();//what does this mean
    p++;
}

2 个答案:

答案 0 :(得分:3)

这是用于同时定义类型和该类型实例的语法。

例如:

struct Foo {} foo;

与以下相同:

struct Foo {};
Foo foo;

因此您的示例定义了类型a,并且创建了一个由10个a组成的数组,称为bus

这样写得更清楚:

class a
{
   char driver[10];

public:
   void install();
};

a bus[10];

通过这种方式,我们现在可以更容易地看到您已经创建了一个名为bus的全局数组,可以像使用其他数组一样使用它。

由于p为零(开始),bus[p]只是为您提供了数组中的“第一个” a对象(开始)。随着p的增加,将访问后续的总线。

所以,这个:

cin >> bus[p].driver;

读入driver 总线的p成员。*

这:

bus[p].empty();

没有任何意义,因为a没有名为empty()的成员函数。

* 好吧,第p+1 总线,因为数组索引从零开始,但是英语不是!

PS 。您可以使用此语法funny (read: stupid) things

答案 1 :(得分:-1)

这是一个看起来很奇怪的代码,可能来自旧的工作簿。 我可以帮助您实现所需的操作,但是很难从此摘要中了解任何内容。

错误:据我记得,在一个未命名结构的末尾添加一个标识符会像通常的方法一样给它起一个名字。

struct {
    float x, y;
} Point;
//is equal to
struct Point {
    float x, y;
}

但是,我不熟悉您提供的数组语法。 我想std::cin >> bus[p].driver是要读取char[10] driver字段的“名称”。但是在这里使用char数组很麻烦,最好用std::string替换它,并在输入后将其缩短为10个字符。

empty()方法通常用作返回布尔值并告诉程序员该容器是否为空的容器函数。但是,此函数未声明,并且代码不会以任何一种方式进行编译。

更不用说放置在函数范围之外的非常量变量,例如static int p = 0,是一个严重的错误。

不正确:总而言之,这是一个非常凌乱的代码,在不知道要实现的目标的情况下,没有人可以在这里为您提供帮助。

请参阅以下答案以获得更好的解释。