C ++警告:“指针参数”arr“可以是指向const的指针”

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

我有三个函数,我不知道为什么第二个和第三个函数在* arr有警告,但第一个没有。警告意味着什么以及如何解决这个问题?

IDE:Clion 2017.3 MinGW64 5.0,CMake 3.9.4

谢谢。

int getFirstEven(int n, int *arr) {
    for (int i = 0; i < n; ++i) {
        if (arr[i] % 2 == 0)
            return arr[i];
    }
    return -1;
}

int getLastOdd(int n, int *arr) {
    int lastOdd = -1;
    for (int i = 0; i < n; ++i) {
        if (arr[i] % 2 != 0)
            lastOdd = arr[i];
    }
    return lastOdd;
}

int countElement(int n, int *arr, int e) {
    int cnt = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] == e)
            cnt++;
    }
    return cnt;
}

enter image description here

c++ arrays pointers
1个回答
4
投票

在可能的情况下支持不变性并用const表示不可变的事物是有道理的。

警告意味着您的函数不会修改arr指向的数据,因此可以使用指向const参数的指针更好地声明该函数。关于那样:

int getFirstEven(int n, int const* arr) {
    for (int i = 0; i < n; ++i) {
        if (arr[i] % 2 == 0)
            return arr[i];
    }
    return -1;
}
© www.soinside.com 2019 - 2024. All rights reserved.