Пожалуйста, медведь со мной, я м от других языков и новичку -с и изучать его из http://c.learncodethehardway.org/book/learn-c-the-hard-way.htmlопределить функцию, возвращающую указатель STRUCT
struct Person {
char *name;
int age;
int height;
int weight;
};
struct Person *Person_create(char *name, int age, int height, int weight)
{
struct Person *who = malloc(sizeof(struct Person));
assert(who != NULL);
who->name = strdup(name);
who->age = age;
who->height = height;
who->weight = weight;
return who;
}
Я понимаю, что вторая функция Person_create возвращает указатель структуры Person. Я не понимаю (может быть, потому что им с другого языка, Erlang, рубин), почему это определить его как
struct Person *Person_create(char *name, int age, int height, int weight)
не
struct Person Person_create(char *name, int age, int height, int weight)
и есть другой способ определить функцию вернуть структуру?
извините, если этот вопрос слишком прост.
Понимать разницу между «Лицом *» и «Лицом». 'Person *' является указателем на объект, а 'Person' является самим объектом. Оба типа - это разные типы, например, как 'int *' и 'int' отличаются. – Mahesh
Итак, 'struct Person * Person_create' совпадает с' struct Person * Person_create' и 'struct Person * Person_create'? Позиция '*' не имеет значения? – allenhwkim
Да, пробелы вокруг '*' здесь неважны. –