【发布时间】:2014-04-30 19:19:57
【问题描述】:
这有什么问题吗? 根据编译器,这一行有错误
void memory_allocation(struct a *s1,struct b *s2,struct c *s3,int size)
主要看起来像
main()
{
struct mystack
{
int head;
void **stack;
void **stackcopy;
int stack_size;
} *ptr ;
struct professor
{
char flag;
char surname[50];
char coursbhe[50];
} *prof;
struct student
{
char flag;
char surname[50];
int semester;
} *stud;
(*ptr).stack_size=getstacksize();
memory_allocation(&ptr,&prof,&stud,(*ptr).stack_size);
}
【问题讨论】:
-
结构体 a、b 和 c 是如何定义的?
-
void memory_allocation(struct a *s1,struct b *s2,struct c *s3,int size):不同的类型。和ptr未初始化。 -
为什么要将指针地址传递给函数memory_allocation?尝试不带 & 符号传递它
-
因为如果我使用 malloc 在函数中分配内存而不传递指针的地址,则不会为 main 中的结构分配内存,所以我必须使用双指针。这就是我知道的它有效,不是吗?
-
您的类型对于定义它们的函数 (
main()) 是本地的。这意味着您不能可靠地将这些类型的变量传递给任何其他函数。您应该在 main 之外定义类型,以便其他函数可以使用相同的类型。有一个类型等价的概念,但也有一个叫做 DRY 的概念——不要重复你自己。另一个函数可以使用这些类型的唯一方法是再次写出它们,重复你自己。不要!
标签: c struct pass-by-reference