C++ - 从 'int' 到 'int**' 的转换无效

C++ - invalid conversion from 'int' to 'int**'

本文关键字:int 转换 无效 C++      更新时间:2023-10-16

我有以下代码:

#include<iostream>
using namespace std;
void insert(int *a[], const int location, const int numofelements, const int value) {
    int n, b[10];
    a = *b;
    for (int n = numofelements; n > location; n--) {
        a[n-1] = a[n];
    }
    b[location] = value;
    *b = a;
}
int main() {
    int test[10] = [1,2,3,4,5];
    insert(test, 2, 5, 7);
    for (int i = 0; i < 6; i++) {
        cout << "test[" << i << "] = " << test[i];
    }
    return 0;
}

编译器说:

[错误]从'int'到'int **'[-fpermissive]的转换无效 [错误]从'int **'到'int'的无效转换[-fpermissive] 这是什么意思?谢谢

这样的错误意味着您将整数和指针混合到整数。您的代码中有几种情况发生。

让我们看这个示例中的指针

//defining 
int a;     //int, a is an integer holding the value
int *b;    //*int, a pointer to an integer
int c[10]; //*int, arrays are to pointers to the first element with some different rules
int **d;   //**int, this is a pointer to a pointer
int *d[10];//**int, this is a pointer to a an array, and arrays similar to pointers
//using pointers
a = *b;    //* before a pointer returns its value
a = b[0];  //resolving the position of an array also returns its value
b = &a;    //& before a value returns the address

让我们看一下您的代码

#include<iostream>
using namespace std;
void insert(int *a[], const int location, const int numofelements, const int value) {
    int n, b[10];
    a = *b; //a is **int. *b means the first element so *b is an int.
    for (int n = numofelements; n > location; n--) {
        a[n-1] = a[n];
    }
    b[location] = value;
    *b = a; //a is **int. *b means the first element so *b is an int.
}
int main() {
    int test[10] = [1,2,3,4,5];
    insert(test, 2, 5, 7); //test is a *int, the function expects a **int
    for (int i = 0; i < 6; i++) {
        cout << "test[" << i << "] = " << test[i];
    }
    return 0;
}

这是有关使用指针的教程