Вопрос 1, ваш код неверен.
При копировании carnum_k
неправильный sizeof(SETTING)
. sizeof (SETTING)
означает размер всех данных в структуре SETTING
. Но вам просто нужно скопировать carnum_k
, поэтому вам нужно указать размер carnum_k
, который равен sizeof (UINT32)
, UINT32
- это тип carnum_k
.
memcpy ( &info->carnum_k, &data->carnum_k, sizeof (UINT32));
Вы также можете просто написать назначение info->carnum_k = data->carnum_k
.
У копии обратной связи есть две проблемы.
sizeof (SETTING)
не так, как при копировании carnum_k
. Вы можете использовать sizeof(UINT32 [30])
, UINT32 [30]
- тип feedback
. info->feedback
- адрес массива, поэтому нет необходимости &info->feedback
, просто info->feedback
.
memcpy(info->feedback, data->feedback, sizeof(UINT32 [30]));
Вопрос 2. Я думаю, вы хотите просто скопировать часть feedback
.
Когда вы копируете память, вам нужно выяснить sr c адрес памяти, адрес памяти dest и размер памяти, которую вы хотите скопировать.
, поэтому если вы хотите скопировать с feedback[2]
в feedback[10]
.
- адрес источника равен
&(data->feedback[2])
- адрес назначения -
&(info->feedback[2])
. - . От 2 до 10 необходимо скопировать 9 значений, поэтому общий размер составляет
9 * sizeof(UINT32)
memcpy(&(info->feedback[2]), &(data->feedback[2]), 9*sizeof(UINT32));
Вопрос 3.
Я не знаю ответа.