Здесь довольно много вопросов.
Прежде всего, убедитесь, что в вашем файле #include <stdint.h>
, потому что на некоторых платформах возникнет проблема с uint8_t.
Во-вторых, когда вы создаете указатель структуры, вы должны выделить место для этой структуры. Это можно сделать с помощью следующего кода:
myStruct *pmyStruct = malloc(sizeof(struct myStructType));
Как уже упоминалось, вы можете использовать {1,2,3...}
только при инициализации массива. Итак, чтобы добавить элементы в массив, вам нужно:
for (int i = 0; i < 6; i++)
pmyStruct->myArray[i] = i+1;
Когда у вас есть структурный указатель, вы получаете доступ к его элементам с операндом ->
. Итак, ваша последняя строка будет:
pmyStruct->x=3;
и, наконец, вам нужен основной метод. Собираем все вместе:
#include <stdlib.h>
#include <stdint.h>
typedef struct myStructType {
uint8_t myArray[6];
uint8_t x;
}myStruct;
int main()
{
myStruct *pmyStruct = malloc(sizeof (struct myStructType));
for (int i = 0; i < 6; i++)
pmyStruct->myArray[i] = i+1;
pmyStruct->x=3;
return 0;
}
Как только вы закончите со всем, обязательно освободите выделенное место с помощью free(pmyStruct);
И обратите внимание на заглавные буквы! pmystruct
НЕ совпадает с pmyStruct
.
Удачи.