【发布时间】:2015-10-26 03:40:01
【问题描述】:
好的,假设你有这个结构:
struct Person
{
int age;
int height;
};
现在你有了这个函数来创建一个指向这个结构的指针:
struct Person *person (int *age, int *height)
{
struct Person *person = malloc(sizeof(Person));
person -> age = age;
person -> height = height;
return person;
}
然后,在 main 函数中你有这个:
struct Person *tom;
这是我的问题,我不知道是否要分配这些我这样做:
*tom = person(20, 70);
或者这个:
tom = person(20, 70);
如果需要进一步澄清,请告诉我,我确信这只是我的一个简单的误解,唉。
【问题讨论】:
-
tom = person(20, 70);是正确的。当您从函数返回指针时,无需取消引用指针tom。 -
另外,由于您的
age和height成员本身不是指针,因此函数签名应如下所示person (int age, int height)。在那里传递指针是不必要的 -
好吧,这是有道理的。感谢您(非常)及时的回复。
-
注意:不要在
->运算符周围添加空格。这看起来很丑陋,而且更难阅读。 -
是的,问这个问题是个错误,在我的实际程序中,函数签名看起来像你说的那样。
标签: c function pointers struct variable-assignment