C动态内存分配。动态分配数组的问题

时间:2018-12-19 21:29:49

标签: c memory dynamic

我创建了一个名为ArrayCount的结构,其中包含一个双精度数组和一个整数,该整数应计算数组出现的频率。

如果双精度数组的大小为n,则想法是创建大小为n的struct ArrayCount的数组! (n!在我的代码中称为m)。

这个想法是为了保护给定算法的ArrayCount-array中的每个排列,计算每个排列的出现次数。 但这只是背景信息,而不是问题的一部分。

我在分配内存时遇到问题。 Array-Count数组的分配工作正常,但是我无法为包含的双数组分配内存。

错误消息是:

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token

当我尝试使用“ double * array_counts[i].array = calloc(n, 8);分配内存时,在initial_array_counts函数期间发生了错误。

预先感谢, 蒂莫

typedef struct {
double* array;
int counter;
} ArrayCount;

void initiate_array_counts(/*INOUT*/ArrayCount* array_counts, 
/*IN*/int n){
    int m = factorial(n);
    for(int i = 0; i < m; i++){
        double* array_counts[i].array = calloc(n, 8);
        for(int j = 0; j < n; j++){
            array_counts[i].array[j] = 0;
        }
    }
}

void shuffle_frequency(int n) {
    double a[n];
    for (int i = 0; i < n; i++) {
        a[i] = i; // 0, 1, 2, ..., n - 1
    }
    int m = factorial(n);
    ArrayCount* array_counts = calloc(m, sizeof(ArrayCount));
    initiate_array_counts(array_counts, n);
    for (int i = 0; i < 1000 * m; i++) {
        shuffle(a, n);
        update_array_counts(array_counts, m, a, n);
    }
    for (int i = 0; i < m; i++) {
                printf("%4d%8d    ", i, array_counts[i].counter);
        printdaln(array_counts[i].array, n);
    }
    free(array_counts);
}

(我只包含必要的代码)

0 个答案:

没有答案