从“int”到“int*”的转换无效错误

问题描述 投票:0回答:1

我的代码给出错误:[Error] invalid conversion from 'int' to 'int*' [-fpermissive] 违规行是

 tao_mang(a[50], 10, kq);
为什么会出现错误呢?有人能帮我吗? 下面是我的代码:

//07_Nguyen Quan Bao
//
#include <iostream>
#include <cmath>
using namespace std;
bool so_nguyen_to(int n){
    if (n < 2) return false;
    for (int i = 2; i <= sqrt(n); i++){
        if (n%i==0){
            return false;
        } else return true;
    }
}   
void tao_mang (int x[50],int n, int sum){
    sum = 0;
    for (int i = 0; i < n; i++){
        cout <<"Moi nhap so nguyen to thu "<<i<<":\n"; 
        cin >> x[i];    
    }
    for (int i =0; i < n; i++){
        if (so_nguyen_to(x[i])){
            sum = sum + x[i];
        }
    }
}
int main(){
    int kq, a[50];
    tao_mang(a[50], 10, kq);
    cout <<"ket qua la: "<< kq << endl;
    return 0;
}

我尝试将数组留空,但程序结果仍然错误

c++ arrays if-statement void
1个回答
0
投票

代码中的错误出现在函数调用

tao_mang(a[50], 10, kq)
; 中。第一个参数应该是一个数组,但您传递的是
a[50]
,它是数组的元素,而不是数组本身。

这是更正后的代码:

//07_Nguyen Quan Bao
//
#include <iostream>
#include <cmath>
using namespace std;

bool so_nguyen_to(int n) 
{
    if (n < 2) return false;
    for (int i = 2; i <= sqrt(n); i++) 
        {
            if (n % i == 0)
            {
                return false;
            }
        }
    return true;  // Move this line outside of the loop
}

void tao_mang(int x[50], int n, int& sum) 
{
    sum = 0;
    for (int i = 0; i < n; i++) 
    {
        cout << "Moi nhap so nguyen to thu " << i << ":\n";
        cin >> x[I];
    }

    for (int i = 0; i < n; i++) 
    {
        if (so_nguyen_to(x[I])) 
        {
            sum = sum + x[I];
        }
    }
}

int main() 
{
    int kq, a[50];
    tao_mang(a, 10, kq);  // Remove [50] from the first argument
    cout << "ket qua la: " << kq << endl;
    return 0;
}

所做的更改:

在函数调用

tao_mang(a[50], 10, kq)
; 中,我删除了
[50]
以传递数组本身。 更改了函数签名以通过引用获取 sum 参数 (int& sum),以便对函数内部 sum 所做的更改反映在外部。 现在,您的代码应该可以正常工作了。

© www.soinside.com 2019 - 2024. All rights reserved.