c++ - 如何使用指针检查数组中的某个位置是否被修改

标签 c++ c++11 pointers

我不明白如何检查数组中的某个位置是否被修改。下面是一个例子:

int array[5];

array[2] = 23;
array[4] = 23;

for (int i = 0; i < 5; ++i) {
    if (array[i] == ????){
        cout << "in array";
    } else {
        cout << "not in array";
    }
}

所以我想知道如何获取它,以便 if 语句检查该项目是否已被修改。所以一旦我变成 2,它会说它在数组中,如果不是,它应该打印“不在数组中”。

这必须使用指针来完成。

最佳答案

这是未定义的行为,因为 array[0] 未初始化。那么当你在你的 if 中比较它时,会发生什么?

您可以将它们全部初始化为您认为“未修改”的值,并检查该值。例如:

int array[5] = {}; // initializes all elements to the default value for int, which is 0

然后,在您的 if 中:

if (array[i] != 0 ) {

如果因为需要完整范围的 int 值而不能这样做,那么您可以使用 std::optional 代替:

#include <iostream>
#include <optional>
int main() {
    std::optional<int> array[5];

    array[2] = 23;

    array[4] = 0;

    for (int i = 0; i < 5; ++i) {
        if (array[i]) {
            std::cout << "in array" << std::endl;
        }
        else { std::cout << "not in array" << std::endl; }
    }
}

关于c++ - 如何使用指针检查数组中的某个位置是否被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58817367/

相关文章:

c++ - 序列号 : write() throttling?

c++ - 按值捕获 shared_ptr 的 lambda 如何影响它的 use_count()?

c - 我无法编译带有动态二维数组和指针的 C 文件

c++ - 定义一个与结构中的变量具有相同类型的变量

c++ - 如何在运行时永久更改窗口图标?

c++ - 以编程方式修改/创建 vcproj 文件

c++ - 模板参数推导顺序

c++ - 并发中的右值引用

c# - 创建一个仅指向另一个数组的一部分的数组?

c - 如何在我的 C 程序中正确使用指针