我想要在被称为
简而言之:我应该如何修改我的代码以便访问可变大小的列表,类似于
ParticleList
的结构中保存名为plist
的数组数据。这些数组的大小可能会有所不同。我知道如何创建一个大小为n[0]
的列表。例如,n[0]
的大小为2。因此,这是一个大小为2的列表。但是,如果我想要创建几个大小为n[0]、n[1]、n[2]
的ParticleList
类型的列表,我该怎么做呢?简而言之:我应该如何修改我的代码以便访问可变大小的列表,类似于
pl[numberOfList].plist[PositionInArray]=-1
或者`pl[numberOfList]->plist[PositionInArray]=-1'?#include <stdlib.h>
#include <stdio.h>
typedef struct{
double *plist;
int plistSize;
} ParticleList;
void sendPar(int *n, int nl){
// Allocate memory for struct ParticleList
ParticleList *pl = malloc(sizeof(ParticleList));
// Allocate memory for list
pl->plist = malloc(sizeof(double)*n[0]);
// Fill list with data
for(int k=0; k<n[0]; k++){
pl->plist[k] = -1;
}
// Write size of list into file
pl->plistSize = n[0];
// Print data
printf("Content of list:\n");
for(int k=0; k<n[0]; k++){
printf("%lf\n", pl->plist[k]);
}
printf("Size of list: %d\n", pl->plistSize);
// Free memory
free(pl);
}
int main(){
// Number of lists
int nl = 3;
// Size of lists
int n[nl];
n[0] = 2;
n[1] = 3;
n[2] = 4;
sendPar(n, nl);
}
n[0]
的列表...什么? - undefined// 列表的数量 int nl = 3;// 列表的大小 int n[nl]; n[0] = 2; n[1] = 3; n[2]=4
。因此,我想说,我知道如何创建一个大小为n[0]
的列表,即2个元素的列表。 - undefinedsendPar(&[n1], nl);
来打印大小为n[1]的列表的结果,但是这段代码仍然没有意义... - undefinedpl[numberOfList].plist[PositionInArray] = -1
,但不知道如何实现。 - undefinedstruct
没有一个变量数组。指针不是一个数组,而且结构体有固定的大小。如果要使用可变长度数组的struct
,请参考“灵活数组成员”(FAM)。 - undefined