Скажет, у меня есть, простая структура, например, как эта:Как назначить массив на структуру в C
struct myStruct {
uint8_t arr[10];
};
Все, что я хочу быть в состоянии сделать это, чтобы изменить содержимое этого массива. Однако кажется, что я не могу напрямую назначить массив (т. Е. Я не могу сделать что-то вроде pointerToThisStruct-> arr = anArrayofSizeTen).
Так вот мой главный метод:
int main(int argc, char **argv) {
uint8_t test[10] = {0};
myStruct *struc;
struc->arr = test; //can't do this
memcpy(struc->arr, test, sizeof(test));
}
Теперь я понимаю, что прямое копирование через не будет работать, но почему тетср также дает мне Segfault? Как я могу изменить массив структур?
Вы segfaulting, потому что вы создаете указатель к структуре. Вместо myStruct * struc; используйте myStruct struc и обратитесь к члену «arr» с помощью struc.arr. – Chimera
@Chimera делает это? У меня создалось впечатление, что знак стрелки -> был тем же самым, что и отсрочить указатель, а затем использовать «.». – earre1990
У вас есть указатель ... но что он указывает * на *? У вас нет фактической структуры. – Dmitri