c - 如何对使用 malloc 声明的 int 数组进行操作?

标签 c arrays malloc int

我有这段代码:

// Returns the fibonacci range until the specified limit
int fibo(int** output, int limit)
{
    // Must be 1 or more
    if(limit < 1) return 0;

    int* range = (int*)malloc(sizeof(int) * limit);
    assert(range);

    int i;

    // Calculate the range
    for(i = 0; i < limit; i++)
    {
        int value;

        if(i == 0)  value = 0;
        if(i == 1)  value = 1;
        else        value = range[i - 2] + range[i - 1];

        range[i] = value;
    }

    *output = range;

    return 1;
}

以限制 15 个输出运行它

65, 1, 66, 67, 133, 200, 333, 533, 866, 1399, 2265, 3664, 5929, 9593, 15522

这根本不对。我怀疑这是因为我正在写像 range[i - 2] 这样的东西,而这不是我应该做的。我尝试使用 int 的大小作为每个值之间的跃点,但出现了段错误。我是否正确使用了 [] ?谁能想到我的输出奇怪的任何其他原因吗?

Here's all the code for the program

最佳答案

改变

if(i == 1)  value = 1;

else if(i == 1)  value = 1;

编辑: 刚刚意识到这已经在评论中得到了回答。

关于c - 如何对使用 malloc 声明的 int 数组进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313911/

相关文章:

Android:如何使字符串数组成为对另一个字符串数组的引用?

php - 从 mySql 获取值到 Php 数组

c - dlmalloc 中的 bin_at

c - 减去 malloc 返回的大小为零的 2 个指针

c - Solaris 中如何从进程 ID 获取进程名称

java - 多线程 JNI 调用

c - 从文件中打印错误的字符?

c - malloc() 函数分配的内存的生命周期

c - 了解 pthread

c - 即时定义常量