首页 > 解决方案 > 数组值不递增

问题描述

我正在编写代码,我希望这能引起我的问​​题。任何帮助表示赞赏>

我通过以下方式创建了一个数组:

    intermediateBinCounts = (int *)malloc(bin_count * thread_count * sizeof(int));

并希望它在另一个函数中增加值:

  for(int i=privateStartingIndex; i<privateEndingIndex; i++){
    int returnedBinIndex = findBin(data[i]);
    int intermBinCountIndex = (threadIndex*bin_count)+returnedBinIndex;
    intermediateBinCounts[intermBinCountIndex]++;
    printf("\nthis is value %d\n", intermediateBinCounts[intermBinCountIndex]);
}

intertermBinCountIndex 是从函数返回的整数,在我的情况下它们的值仅在 0、1、2、3 之间。

但我的 printf 正在返回:

this is value -1163005938

this is value -1163005937

this is value -1163005938

我不知道我的问题是否能够阐明我的问题,如果它不能请让我知道,以便我可以最好地再次编辑它。

我希望将intermediateBinCounts 初始化为零并增加该索引处的值,该值是从函数调用(即findBin)返回的。

标签: arraysc

解决方案


我希望intermediateBinCounts将其初始化为零

好吧,你不想要那个。intermediateBinCounts是一个指针,您希望将其设置为malloc.

您要设置为零的是intermediateBinCounts指向的内存!

您可以在 - 之后使用一个简单的循环,malloc例如:

int * intermediateBinCounts = malloc(bin_count * thread_count * sizeof(int));
for (int i=0; i < bin_count * thread_count; ++i)
{
    intermediateBinCounts[i] = 0;
}

或使用calloc而不是malloccalloc初始化分配的内存:

int* intermediateBinCounts = calloc(bin_count * thread_count, sizeof(int));

推荐阅读