#include <iostream>
using namespace std;
int numericMenu();
void newGrade(int*, int);
int main() {
int choice = 0;
int* gradePtr = nullptr;
int size = 0;
int i = 0;
gradePtr = new int[size];
do {
choice = numericMenu();
if (choice == 1)
{
newGrade(gradePtr, size);
}
} while(choice != 2);
return 0;
}
int numericMenu(){
int choice = 0;
cout << "1. Add Grade\n";
cout << "2. Quit Program \n";
cin >> choice;
return choice;
}
void newGrade(int* gradePtr, int size){
int *pTemp = nullptr;
pTemp = new int[size];
for (int i = 0; i <= size; i++)
pTemp[i] = gradePtr[i];
cout << "Enter score: ";
cin >> pTemp[size];
delete[] gradePtr;
gradePtr = pTemp;
pTemp = nullptr;
for (int i = 0; i <= size; i++)
cout << gradePtr[i] << endl;
size++;
}
我正在做一项作业,制作一个分析测试成绩的程序。要求之一是创建我们自己的动态大小的数组。我们不允许使用标准模板库中的任何内容。
它应该只是允许用户输入存储在数组中的一堆数字,然后将这些数字打印出来。这段代码在 main 中运行良好。当我尝试将其变成一个函数时,它显示第一个分数,然后显示内存地址。
代码中存在不同的问题。
1-
gradePtr = new int[size];
你不必分配它,直到它有大小 for (int i = 0; i <= size; i++)
你只需旋转 size 次,所以它应该从 0 到 size-1 void newGrade(int* gradePtr, int size)
您通过复制来传递这些参数,以便更新主函数中的版本,您必须使用引用运算符发送它们void newGrade(int* & gradePtr, int & size)