我无法使动态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;
}