我正在编写一个简单的C程序来理解C编程。这是我的代码的样子:
#include <stdio.h>
#include <stdlib.h>
void add(int** array, int size, int value)
{
if(!*array)
*array = calloc(4,sizeof(int));
if(size > 3)
{
*array = realloc(*array,6*sizeof(int));
}
*array[size] = value;
}
int main()
{
int* numbers = NULL;
int i;
for(i=0; i<6; i++)
{
add(&numbers,i,i);
}
for(i=0; i<6; i++)
{
printf("%d\n",numbers[i]);
}
return 0;
}
函数add应该做的是,将给定值放在数组的给定点,如果数组不够大,请调整数组大小。目前,我得到的是分段错误。我尝试了GDB,似乎数组变量没有得到add函数设置的值。我无法理解为什么。请帮忙。
答案 0 :(得分:2)
首先得到原始指针:(*array)
,然后将其编入索引:(*array)[i]
。
运算符[]
的优先级高于取消引用*
运算符。