Fibonacci C++-从“int”到“int*”的转换无效,并且初始化了“int fibo(int,int*,in

Fibonacci C++ - invalid conversion from ‘int’ to ‘int*’ and initializing argument 2/3 of ‘int fibo(int, int*, int*)’

本文关键字:int in 初始化 fibo 转换 C++- Fibonacci 无效      更新时间:2023-10-16

你好,我在Fibonacci上的C++中遇到了这个程序的问题,我试图在谷歌上搜索错误,但我没有找到解决方案/解释。

有一个代码:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cmath>
using namespace std;
int fibo(int,int*,int*);
int conta=0;
int main() {
    int n,m,f;
    int fibN=1;
    int fibNMeno1=0;
    cout << "Calcolo del numero di Fibonacci di indice n n n" << endl;
    cout << "Introdurre n (positivo e minore di 47:" << endl;
    cin >> n;
    n=abs(n/1);
    if (n<1) {
        fibN=0;
    }
    else {
        fibo(n,fibN,fibNMeno1);
    }
    cout << "n Fibonacci di indice " << n << "vale: " << fibN << endl;
    cout << "n numero di chiamate ricorsive: " << conta << "nn" << endl;
}
int fibo(int n, int*pfn, int* pfnMeno1) {
    int t;
    int tFn,tFnMeno1,tF;
    conta++;
    if (n==1) {
        *pfn=1; *pfnMeno1=0; return 1;
    }
    else {
        t=n%2; n=n/2;
        fibo(n,pfn,pfnMeno1);
        tFn=(*pfn)*(*pfn)+2*(*pfn)*(*pfnMeno1);
        tFnMeno1=(*pfn)*(*pfn) + (*pfnMeno1)*(*pfnMeno1);
        if(t) {
            tF=tFn;
            tFn=tFn + tFnMeno1;
            tFnMeno1=tF;
        }
        *pfn=tFn;
        *pfnMeno1=tFnMeno1;
        return 3;
    }
}

错误在哪里?它是如何在带有*的c++上工作的?

fibonacci.cpp: In function ‘int main()’:
    fibonacci.cpp:23:22: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
     fibo(n,fibN,fibNMeno1);
                          ^
    fibonacci.cpp:7:5: note:   initializing argument 2 of ‘int fibo(int, int*, int*)’
     int fibo(int,int*,int*);
         ^
    fibonacci.cpp:23:22: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
     fibo(n,fibN,fibNMeno1);
                          ^
    fibonacci.cpp:7:5: note:   initializing argument 3 of ‘int fibo(int, int*, int*)’
     int fibo(int,int*,int*);

fibN/fibNMeno1有int类型,但函数req。int*类型,它是指向int.的指针

如果您想将int作为int*传递,则需要获取本地变量的地址(&符号),如下所示:

fibo(n,&fibN,&fibNMeno1);

因为您可能想要fibo(n,&fibN,&fibNMeno1)而不是fibo(n,fibN,fibNMeno1)。。。

fibo函数需要一个int和两个指针。你打电话时带着三分。因此编译器无法进行隐式转换。