我试图在这个程序中使用 realloc 来增加数组的大小,使用指针到指针。但它最终并没有完成任务:
#include <stdio.h>
void push(int** data)
{
*data = (int *)realloc(*data, 5 * sizeof(int));
*data[4]=100;
}
int main() {
int *array = (int *)malloc(2 * sizeof(int));
push(&array);
printf("%d", array[4]);
free(array);
return 0;
}
我不想使用全局变量作为数组,我希望直接对数组进行更改。我该怎么办?
这条线并不符合你的想法:
*data[4]=100;
数组下标运算符的优先级高于一元解引用运算符。所以上面和这个是一样的:
*(data[4])=100;
这不是你想要的。您需要括号首先取消引用指针,然后为数组添加下标。
(*data)[4]=100;