C++ 如何构造指向结构的指针数组并将值赋给所创建的结构
我正在尝试创建具有以下结构的指针数组:C++ 如何构造指向结构的指针数组并将值赋给所创建的结构,c++,arrays,pointers,struct,C++,Arrays,Pointers,Struct,我正在尝试创建具有以下结构的指针数组: struct No { int decimal; char *binary; char *octal; char *hexadecimal; }; 我有两个函数来构造数组并打印数组: void constructArray (No *Number, int size) { No **temp = new No *[size]; for (int i = 0; i < size; i++) {
struct No {
int decimal;
char *binary;
char *octal;
char *hexadecimal;
};
我有两个函数来构造数组并打印数组:
void constructArray (No *Number, int size) {
No **temp = new No *[size];
for (int i = 0; i < size; i++)
{
temp[i]->decimal = rand() % 1000;
temp[i]->binary = "0";
temp[i]->octal = "0";
temp[i]->hexadecimal = "0";
}
}
void printArray (No *Number, int size) {
cout << "Decimal\t" << "Binary\t\t\t" << "Octal\t\t" << "Hexadecimal" << endl;
No **temp = new No *[size];
for (int i = 0; i < size; i++) {
cout << temp[i]->decimal << "\t"
<< temp[i]->binary << "\t\t\t"
<< temp[i]->octal << "\t\t"
<< temp[i]->hexadecimal << endl;
}
}
程序已成功编译并运行,但未输出任何内容。我的代码有什么问题?这里初始化数组的方式是否有问题?我怎样才能克服这个问题?提前非常感谢您的帮助。我认为您的意图需要在您已经知道的地方添加一行
for (int i = 0; i < size; i++)
{
temp[i]->decimal = rand() % 1000;
for(int i=0;i十进制=兰德()%1000;
你应该
for (int i = 0; i < size; i++)
{
temp[i] = new No;
temp[i]->decimal = rand() % 1000;
for(int i=0;i十进制=兰德()%1000;
在constructArray
中,您在那里更新了编号
?您正在泄漏大量内存,您是否有可能来自Java背景?为什么使用C标记?@SouravGhosh我看到了您的评论,这就是为什么要澄清:)没有输出?或者seg错误?您在constructArray
中有一个非常明显的错误,应该是错误的t、 您分配一个指针数组,但不分配指向它们的结构,也不初始化这些指针。然后,您将数据存储到这些未初始化指针指向的任何位置。您是否尝试调试应用程序?调试器允许您单步执行代码,然后您将能够看到出现了什么问题。Google'debugging'int main(){No*number;int size=(rand()%9)+1;constructArray(number,size);您需要将number设置为某个值。例如number=New No;您的“No”类将需要一个构造函数来初始化其中的所有成员数据。
for (int i = 0; i < size; i++)
{
temp[i] = new No;
temp[i]->decimal = rand() % 1000;