我正在尝试动态增加int
数组的内存,但是我遇到了让它运行的问题。它没有扩展并向阵列添加更多元素,我不确定我做错了什么。
请帮忙!
int* fibs = NULL;
void genFibs(){
int i = 1,curSize = 0,curNum = 0;
int flag = 1;
while(flag){
if(curSize != 0 &&curSize != 1){
curNum = fibs[curSize-2]+fibs[curSize-1];
}else if(curSize-1 == 1){
curNum = fibs[curSize-1]+fibs[curSize-1];
}else{
curNum = 1;
}
if(curNum<=10){
curSize++;
fibs = (int*)realloc(fibs,curSize*sizeof(int));
fibs[curSize-1] = curSize;
}else{
flag = 0;
}
}
}
}
void printFibs(){
int size = sizeof(fibs)/sizeof(int);
int i = 0;
for(i = 0;i<size;i++){
printf("%d is: %d\n",i,fibs[i]);
}
}
答案 0 :(得分:5)
嗯,您的打印代码错误。 sizeof(fibs)
始终会被评估为sizeof(int *)
,因为它只是一个指针。
您必须找到将size
传递给print
函数的方法。例如,它可能是数组的第一个值。但这是实施细节,这取决于你。
编辑:将sizeof(void *)
更改为sizeof(int *)
因为指针大小可能会有所不同,如pmg所示。
答案 1 :(得分:1)
sizeof(fibs)
是指针fibs
的大小,它是常量,因此您的打印功能将始终打印相同数量的元素