我在 'int *mass1= ArrayGenerate(raz);' 行发现一个错误:
错误:从“int”到“int*”的无效转换 [-fpermissive]
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int ArrayGenerate(int raz) {
int* mass1 = new int[raz];
for (int i = 0; i < raz; i++) {
mass1[i] = rand() % 200 - 100;
cout << mass1[i] << " ";
}
return *mass1;
}
int main() {
setlocale(LC_ALL, "russian");
int raz, n, k;
srand(time(NULL));
cout << "Ввести длинну массива \n";
cin >> raz;
int* mass1 = ArrayGenerate(raz);
cout << "\n Введите номер элемента, с которого хотите начать удаление: ";
cin >> k;
cout << "\n Введите количество элементов, которые хотите удалить:";
cin >> n;
for (int i = k; i < raz - n; i++) {
mass1[i] = mass1[i + n];
}
for (int i = 0; i < raz - n; i++)
cout << mass1[i] << ' ';
system("pause >> void");
return 0;
}
好吧,毕竟编译器会说话。您的函数
ArrayGenerate返回int,并且您正试图分配给 type 的变量int*。明显的错误
ArrayGenerate- 您没有返回创建的数组,而是返回其第一个元素的值(从而导致内存泄漏)。将其声明为返回
int*,并在其中写入顺便说一句,在程序结束时,最好通过调用来释放内存
您正在尝试将整数数组作为整数传递。在返回类型中将 int 更改为 int* 并且不要取消引用
返回类型必须是指向数组的指针,以下是正确的方法: