Я работаю над заданием и столкнулся с проблемой. Что касается меня, и из того, что я узнал, следующий код должен быть правильным, но он не работает. В основном то, что я пытаюсь, копирует строковое значение в элемент переменной структуры, является частью массива, переданного в метод как указатель. Что мне не хватает?Изменение значений в элементах массива структур
typedef struct
{
char * name; //variable in struct I am trying to access
} Struct;
void foo(Struct * arr) //array of Structs passed into function as a pointer
{
int i = 0;
while(i++ < 2)
{
arr[i].name = malloc(sizeof(char *)); //assigning memory to variable in each Struct
arr[i].name = strdup("name"); //copying "name" to variable in each Struct
printf("C - %s\n", arr[i].name); //printing out name variable in each Struct
}
}
main()
{
Struct * arr; //defining pointer
arr = calloc(2, sizeof(Struct)); //allocating memory so pointer can hold 2 Structs
foo(arr); //calling function foo passing pointer into function
return 0;
}
Этот код компилируется и запускается, однако он не выполняет то, что он предназначен для выполнения. Простите меня, если это что-то тривиальное. Я новичок в языке C
'ЬурейиЕ структуры Struct' очень, * очень * *** очень плохо Идея. *** –
Я использовал «Struct», чтобы сделать это очевидным при чтении, что я использую указатель как массив структур – etienz
1. базовый тип массива не имеет значения. 2. Но это видно из декларации, это небольшой фрагмент кода. 3. Если вы хотите сделать его явным в любом случае, не делайте typedef и используйте ключевое слово 'struct', как в' struct Foo array [100]; '. Не вызывайте путаницу. Довольно пожалуйста. –