重新分配的值未传回调用函数
realloc'ed value not passed back to the calling function
我正在编写一个简单的 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 函数设置的值。我不明白为什么。请帮忙。
首先你得到原始指针:(*array)
,然后你索引它:(*array)[i]
.
运算符 []
的优先级高于取消引用 *
运算符。
我正在编写一个简单的 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 函数设置的值。我不明白为什么。请帮忙。
首先你得到原始指针:(*array)
,然后你索引它:(*array)[i]
.
运算符 []
的优先级高于取消引用 *
运算符。