c++ - (c++) 检查指针数组的空值

标签 c++ arrays pointers null initialization

我对指针初始化的概念理解停滞不前。

我创建了一个这样的数组:

int *A = NULL;
A = new int[p];

现在尝试模拟插入值这个数组,A。 这是问题所在,想象一下数组是否已经放置了一些值。

例如:

A[0]= 10;
A[1]= 4;
A[2]= NULL;
A[3]= 2;

如何约束 if 语句来检查数组是否为空?

用 i 遍历数组值并检查

if(A[i] == NULL){
cout << "hello";
}

永远不会打印那个?

但是!如果我初始化数组然后执行此操作。

int *A;
A = new int[p];
for (int i = 0; i < p; i++) {
    A[i] = 0;
}

它将允许我捕获该 NULL 值并执行我的操作。

int *A = {0}; 有什么区别? (目前不为我工作)

并循环遍历,将每个值分别设置为 0?

最佳答案

A 的每个元素的类型是一个 int .使用 NULL 意义不大作为 int 的元素, NULL与指针文字值更多相关;尽管从 C++11 开始,nullptr代表那个。

除非您愿意为“未设置”使用粗略的“魔法值”int , 考虑使用 std::vector<boost::optional<int>>作为 A 的类型.然后您可以判断某个元素是否已明确设置。

boost::optional正在作为 std::optional 发布到 future 标准 (C++17) 中,所以在适当的时候重构它。 (C++17 之前的另一种方法是从 future 的 C++ 标准库中借用源代码:std::optional 在 C++11 之后的版本中很容易实现。)

引用资料:

http://en.cppreference.com/w/cpp/utility/optional http://www.boost.org/doc/libs/1_61_0/libs/optional/doc/html/index.html

关于c++ - (c++) 检查指针数组的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46765628/

相关文章:

c++ - 调整 const 映射键

java - 如何将 Enter 添加到这个字符串数组中?

c++ - 缓冲区大小每次增加

javascript - AngularJS:一次显示数组中的一个特定对象

javascript - 对对象数组进行数组搜索 - Javascript

c++ - C++ 映射可以包含指向我的任意类的指针吗?

pointers - 为什么在 Go 中使用自定义 http.Handler 时使用指针?

c - 将NULL分配给C中链表中的头节点

c++ - cudaMalloc 问题和 "out of memory"错误

c++ - 像std::is_pointer和std::is_integral,std::is_cstring_pointer如何实现?