【发布时间】:2017-01-16 12:37:04
【问题描述】:
我想将数据保存在名为plist 的数组中。这些数组的大小可以不同,并且是称为ParticleList 的结构的一部分。我知道如何创建一个大小为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]的列表...什么? -
这里的
sendPar函数正在泄漏内存。除了你的问题不太清楚,你应该详细说明一下。 -
@SouravGhosh
// Number of lists int nl = 3;// Size of lists int n[nl]; n[0] = 2; n[1] = 3; n[2]=4。因此我想说,我知道如何创建一个大小为n[0]的列表,它等于 2。因此,一个大小为 2 的列表。 -
@MichaelWalz 我只想使用我的结构
ParticleList这样我就有列表plist和列表的大小plistSize。这有几个列表。然后我想以某种方式访问列表,例如pl[numberOfList].plist[PositionInArray] -
调用
sendPar(&[n1], nl);打印大小为n[1]的列表的结果,但代码仍然没有意义...