你不能在结构体内部分配内存(事实上,除了struct声明中的成员类型声明外你不能有任何语句)。既可以使用一个构造(C++),或分配存储器的结构声明外results
指针,像
// this statement must be outside the struct definition
pmemOUT->results = malloc(n* sizeof(int));
实施例:
#include <stdio.h>
#include <stdlib.h>
int n = 16;
struct memory {
int *results;
int side;
} *pmemOUT;
int main()
{
pmemOUT = (struct memory*)malloc(sizeof(struct memory)); /* allocate memory for the struct */
pmemOUT->results = (int*)malloc(n * sizeof(int)); /* allocate memory for its member */
pmemOUT->results[0] = 10; /* assign something */
printf("%d\n", pmemOUT->results[0]); /* test that it worked */
return 0;
}
欢迎堆栈溢出。请尽快阅读[关于]页面。另外请注意,您应该决定是否编写C或C++代码,因为根据您使用的是哪种语言,答案是不同的。如果你用C编写,那么你就不能把可执行代码放在结构定义的中间。如果你正在编写C++,你不应该首先使用'malloc()'(而是使用'new'),并且分配将在一个构造函数中完成,并带有一个参数告诉你要分配多少个元素并且您应该记录分配了多少元素)。 – 2014-11-25 03:28:45