Как взять значение у указателя и скопировать в другой указатель - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть подпись метода:

void word_not(lc3_word_t *R, lc3_word_t *A)

Мне нужно взять содержимое * A и скопировать его в * R.

Как мне это сделать?

Я пробовал задание

* R = * A; но мой компилятор жалуется.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011
memcpy(R, A, sizeof(lc3_word_t));

memcpy копирует определенное количество байтов из A в R. Предполагается, что для структур типа lc3_word_t имеет смысл, что R указывает на выделенное пространство.

0 голосов
/ 30 сентября 2011

Да, как сказал Дэвид, memcpy должен помочь.

Но убедитесь, что память выделена для R, иначе вы в конечном итоге повредите память некоторых других переменных. И если вы планируете выделить память внутри этой функции (я бы предпочел этот способ), измените подпись следующим образом

void word_not(lc3_word_t **pR, lc3_word_t *A)
{
     *pR = (lc3_word_t*)malloc(sizeof(lc3_word_t));
     if(*pR != 0)
     {
          memcpy(*pR, A, sizeof(lc3_word_t));
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...