我无法使动态int数组正常工作。我试过一些例子,但还是没有成功。我想我在做一个小的指针问题,但我不知道是什么。我想要一个动态int数组,然后从另一个函数向这个数组中添加数字。我已经让柜台开始工作了。
我试着把*放在不同的地方,尝试我的方法,但我现在缺乏知识,无法真正知道*应该在哪里。我知道一些关于&*的基本知识,但显然还不够

static void counterFunction(int* pointerToArray[], int* count)
{
    while (*count < 10) {
        *(*pointerToArray + *count) = *count;
        *count = *count + 1;
    }
}

static int* writeSortedToArray(void)
{
    // I need to store 1000 numbers at this point
    int* dynamicArray = malloc(1000 * sizeof(int));
    int counter = 0;

    counterFunction(&dynamicArray, &counter);

    return 0;
}

计数器工作正常,动态数组根本不工作根据我的调试器,它只存储0(xcode)

最佳答案

你犯了一些错误:
1)int* pointerToArray[]是指向指针的指针。您应该使用int* pointerToArray
2)*(*pointerToArray+*count)=*count;正在解引用pointerToArray两次,您应该使用*(pointerToArray + *count) = *count;
3)dynamicArray已经是指针,不应使用&运算符获取其地址。然后counterFunction(&dynamicArray, &counter);应在counterFunction(dynamicArray, &counter);中转换。
最后,您的代码应该如下所示:

#include <stdio.h>
#include <stdlib.h>

static void counterFunction(int * pointerToArray, int * count){

    while (*count < 10) {
        *(pointerToArray + *count) = *count;
        *count += 1;
    }
}


static int * writeSortedToArray(){

    //I need to store 1000 numbers at this point
    int * dynamicArray = malloc(100 * sizeof(int));
    int counter = 0;

    counterFunction(dynamicArray, &counter);

    // as suggested, finally release the array
    free(dynamicArray);

    return 0;
}

int main(){
    writeSortedToArray();
    return 0;
}

08-19 18:58