Мне известно об использовании vector[i].member
при доступе к члену локальной структуры vector. Но сейчас я изучаю динамическое размещение, и, насколько я читал, мне нужно использовать ->
для доступа к члену, когда структура vector
является динамической.
#include<stdio.h>
#include<stdlib.h>
//Struct that stores a person's number and first name.
typedef struct person{
int number;
char* first_name;
} Person;
int main(){
int List_size; //Stores the size of the list.
scanf("%d", &List_size);
Person* list= (Person*) malloc(List_size * sizeof(Person)); //Allocate a vector of persons struct in a variable list.
for(int i = 0; i < List_size; i++){ //Fills each person of list
scanf("%d", &(list[i]->number));
(list[i]->first_name) = (char*) malloc(100 * sizeof(char));
scanf("%s",(list[i]->first_name));
}
for(int i = 0; i < List_size; i++){ //Prints each person of list
printf("%d is list[%d].number, and ", (list[i]->number), i);
printf("%s is list[%d].name\n", (list[i]->first_name), i);
printf("---------------\n");
}
}
Компилятор говорит
ошибка: неверный аргумент типа '->' (есть 'Person')
Однако, когда я использую list[i].member
вместо list[i]->member
, программа работает отлично. Я запутался, нужно ли мне использовать ->
. Я хотел, чтобы вектор структуры не использовал стековую память, а вместо этого кучу.