我有一个结构体,我想在结构中malloc()
一个 1D 数组,但它不允许我。这是我的结构。
//n = blabla
struct memory {
int *results;
results = malloc(n * sizeof(int));
int side;
} *pmemOUT;
错误是"'结果'之前的预期说明符-限定符-列表",但我真的不明白这意味着什么。我在互联网上读到这个错误意味着我在声明之前使用了某些东西,但我仍然无法理解出了什么问题。
不能在
结构内分配内存(实际上,结构声明中不能包含除成员类型声明之外的任何语句)。要么使用构造函数 (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("%dn", pmemOUT->results[0]); /* test that it worked */
return 0;
}