Ошибка с массивом error: invalid conversion from 'int' to 'int*'

128
22 июня 2019, 06:50

Ошибку ловлю на строке 'int *mass1= ArrayGenerate(raz);':

error: invalid conversion from 'int' to '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;
}
Answer 1

Тип возвращаемого значения должен быть указатель на массив , вот как правильно:

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;
}
Answer 2

Ну ведь все ясно говорит компилятор. Ваша функция ArrayGenerate возвращает int, а присваивать вы пытаетесь переменной типа int*.

Явная ошибка в ArrayGenerate - вы возвращаете не созданный массив, а значение его первого элемента (получая тем самым утечку памяти).

Объявите ее как возвращающую int*, а в ней напишите

return mass1;

И, кстати, в конце программы неплохо бы освободить память, вызвав

delete[] mass1;
Answer 3

Массив интов пытаетесь передать как инт. Исправьте инт на инт* в возвращаемом типе и не разыменовывайте

READ ALSO
Не правильно работает структура

Не правильно работает структура

У меня есть класс, но программа вылетает после создания объекта его типа

121
Как в OpenGL нарисовать дугу?

Как в OpenGL нарисовать дугу?

Как в opengl c++ нарисовать дугу которая начинается с определённой точки и заканчивается определённой точкой Пример - дуги которые между многоугольниками...

104
Помогите разобраться variadic templates

Помогите разобраться variadic templates

Покажите пожалуйста простой пример с variadic templatesХотелось бы следующее

137
Не работает чтение и запись в файл Qt

Не работает чтение и запись в файл Qt

Есть окно, в окне кнопка и лейблкод кнопки

142