如何在C++中获取动态数组索引大小



我想打印动态数组索引大小
'InputData'函数生成三个动态数组。我想在主函数中获取数组索引大小。

例如,int arr[10]->gt;索引大小为10我想要另一种方法来获得大小,而不是制作一个新的数组来记忆它。

这是我有的代码

struct Subject {
char SubName[30];
char Grade[10];
float GPA;
};
struct Student {
char StdName[30];
Subject* Sub;     
};
int SubNum; 
Student Std[3];
Subject* Sub; 
void InputData(Student* stu)
{
for(int i=0; i<3;i++{
cin >> SubNum;
stu[i].Sub = new Subject[SubNum]; 
}
}
int main()
{
InputData(Std);
cout<< //want to print out dynamic array index size
}

如何在C++中获取动态数组索引大小

我假设您的意思是数组的大小。

一般来说;得到";动态数组的大小。你需要做的是把尺寸储存在某个地方。例如,在一个变量中。然后你可以"得到";通过访问存储的对象来调整大小。

事实上,你就是这么做的。您将大小存储在变量SubNum中,您可以像这样打印大小:

std::cout << SubNum;

当然,您为每个数组覆盖这个变量,所以在循环之后,您只存储了最后一个数组的大小。您需要分别存储每个尺寸,以便以后可以访问所有尺寸。


在您的示例中,您泄漏了所有的动态数组。我建议不要使用拥有裸指针。我建议使用std::vectorstd::vector会为您记录尺寸。