【问题标题】:How to dynamically fill an array with a fibonachi sequence如何用斐波那契数列动态填充数组
【发布时间】:2019-05-03 13:27:33
【问题描述】:

我的问题是关于动态内存分配和指针算术。我有一个在主函数中调用的函数,它应该用 n 个 long 填充数组,并用斐波那契数列动态填充它们。我的函数在下面,但它似乎没有给我正确的输出。

long* make_fib_array(long n){

int i;
long *fib;  
fib = (long*)malloc(sizeof(long)*n);
if (fib == NULL){
    printf("ERROR: Out of memory\n");
return NULL;}


*fib = 0;
*(fib +1) = 1;
for (i=2;i<n;i++);{
    *(fib +i) = *(fib + (i-1)) + *(fib + (i-2));}     

for(i=0;i<n;i++){
    printf("%ld\n",*(fib + i));}


return fib;}

使用 0 和 1 的值可以很好地打印,但之后的值非常大并且不是预期的。我怀疑这与我的指针算术有关,但我不确定它是什么。

【问题讨论】:

  • *(fib + (i+1)) = 1; 在分配值之前使用i -> 未定义的行为
  • 我已经更正了,但错误仍然存​​在,不过我会为此编辑帖子,谢谢
  • @tribo32:您必须在使用之前像int i = 0 一样初始化i。否则 i 包含 ****junk*** 值

标签: c pointers dynamic-memory-allocation fibonacci pointer-arithmetic


【解决方案1】:

只需在 for 循环括号后删除 ;

来自

for (i=2;i<n;i++);{

for (i=2;i<n;i++) {

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2022-12-09
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2015-06-05
相关资源
最近更新 更多