Как сохранить адрес памяти 2d массива в элементе указателя структуры в C - PullRequest
1 голос
/ 10 февраля 2020

Структура:

struct cloud {
    //declare a pointer to point to the 2d array
    char *pointer;

};

Основной функции задается (struct cloud u*) в качестве параметра, для ссылки на структуру

Остальная часть функции включает присвоение значений 2d массив arr, тогда мне нужно сделать указатель в struct указывает на место в памяти массива 2d.

До сих пор я сделал следующее, и адрес памяти указателя структуры не изменился после назначения.

    printf("2d array memory address is %p\n", arr);
    printf("struct array memory address before assignment is %p\n", &(u->pointer));

    u->pointer = arr;

    printf("struct array memory address after assignment is %p\n", &(u->pointer));

1 Ответ

0 голосов
/ 10 февраля 2020

Как вы написали в комментарии, у вас есть одномерный массив, объявленный как

char *arr[rownum];

Внутри структуры вы можете объявить указатель, который будет указывать на первый элемент массива, например

struct cloud {
    char **pointer;
};

, а затем напишите что-то вроде

u->pointer = arr;

Обратите внимание на то, что если массив является локальной переменной функции и объект структуры объявляется вне функции, то после выхода из функции указатель будет иметь недопустимое значение, потому что массив не будет живым.

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