表输出错误

Error output from the table

本文关键字:错误 输出      更新时间:2023-10-16

请运行此代码,并解释为什么输出如下:

table[0]=3
table[1]=-858993567
table[2]=4
#include "stdafx.h"
struct First
{
    long data;
};
struct Second : public First
{
    char marker;
};
void printTable(First *table, int length)
{
    for (int i=0; i < length; ++i)
    {
        printf("table[%d]=%ldn", i, table[i].data);
    }
};
int _tmain(int argc, _TCHAR* argv[])
{
    Second myTable[3];
    myTable[0].marker='a';
    myTable[1].marker='b';
    myTable[2].marker='c';
    myTable[0].data=3;
    myTable[1].data=4;
    myTable[2].data=5;
    printTable(myTable, 3);
    return 0;
}

有人能帮我吗?

函数需要一个First数组,但您传递的是一个Second数组。这根本不起作用。

您可以使用指向基类的指针来传递单个派生对象,但不能传递数组。索引运算符[]需要知道对象的确切类型,才能计算它们的位置。