Приветствую, не могу самостоятельно разобраться в чем разница между двумя методами использования, к примеру:
obj.show_name
и
obj->show_name
Допустим имеем структуру данных:
typedef struct users
{
char* name;
char* password;
}user_t;
Далее начинаем работать с этой структурой:
user_t mt1;
user_t *mt2;
int main()
{
mt1.name = "Andrey";
mt1.password = "Password";
mt2 = malloc(sizeof(user_t));
mt2->name = strdup("Andrey");
mt2->password = strdup("Password");
mt1.name = NULL;
mt2.password = NULL;
free(mt2->name);
free(mt2->password);
return 0;
}
В каких случаях нужно использовать mt1, а в каких mt2? На мой взгляд разницы в их работе нет, в то время как реализация mt1 явно короче чем mt2, опираясь на этот факт, я почти всегда использую метод mt1 и не понимаю зачем использовать mt2.
Пробовал найти ответ в литературе (С. Прата), теория понятна, но на практике не могу понять принципиальные различия этих двух подходов.