Как вставить структуру или указатель внутри ячейки обычного массива? C ++ - PullRequest
0 голосов
/ 03 мая 2020

я сделал массив, который выглядит следующим образом: int array [array_length]; теперь я хочу ввести в одну из его ячеек указатель или структуру (пока не имеет значения содержимое этих указателей / структур), как мне это сделать?

это то, что я делал до сих пор:

const int array_length = 5;

struct Point {double _x,_y;};

void read_points(int array[array_length]);

int main(){
    int array[array_length];
        int i = array_length;   
    struct Point *temp;  
    while (i > 0) {
        temp = new (std::nothrow) struct Point;
        array[i-1] = &temp;
        if (array[i-1] == NULL) {
            cerr << "Cannot allocate memory\n";
            exit(EXIT_FAILURE);
        }
        i--;
    }

    return EXIT_SUCCESS;
}

1 Ответ

0 голосов
/ 03 мая 2020

В объявлении типа int array[array_length]; int означает, что это массив значений int. Поэтому вам нужно объявить его как Point* array[array_length]; (массив указателей на объекты Point). И тогда ваш temp уже является указателем на объекты Point, поэтому array[i-1] = temp; - это способ поместить их в массив. Таким образом, ваш окончательный код может выглядеть так:

#include <iostream>
using namespace std;

const int array_length = 5;

struct Point {double _x,_y;};

//void read_points(int array[array_length]);

int main(){
    Point* array[array_length];
    int i = array_length;
    struct Point *temp;
    while (i > 0) {
        temp = new (std::nothrow) struct Point;
        array[i-1] = temp;
        if (array[i-1] == NULL) {
            cerr << "Cannot allocate memory\n";
            exit(EXIT_FAILURE);
        }
        i--;
    }

    return EXIT_SUCCESS;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...