c++ - 使用 c while 循环循环所有整数数组元素

标签 c++ arrays pointers

我正在尝试使用指针循环一个整数数组,但我得到了一个奇怪的值..

int nums[1] = { 1 };
int *p = nums;
while(*p != NULL) {
    cout << " LOOPING, p is " << *p << endl;
    p++;
}

当我运行时,我得到下一个输出:

 LOOPING, p is 1
 LOOPING, p is -858993460
 LOOPING, p is 4454504
 LOOPING, p is 3032019

为什么我会得到那些奇怪的值?我应该只看到“1”,因为我一直循环直到得到 NULL 指针,并且在每个循环中我移动下一个指针。

最佳答案

while(*p != NULL) {

比较错误的原因有两个:

  • *p 是一个整数,而不是像 NULL 暗示的指针
  • 数组不是以 0 结尾的,所以即使 NULL 被当作一个奇特的 0,它也不会工作

你可以试试:

int nums[] = {1, 0};
while(*p)

关于c++ - 使用 c while 循环循环所有整数数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975699/

相关文章:

javascript - 组件正在将文本类型的受控输入更改为不受控 - ReactJS

c++ - 这段代码是如何工作的,反转字符串的真正简短方法,它有效,但我不知道如何

c - 将指针移动一个字节

c++ - 递归最大S个整数

c# - 如何跨不同的编程语言共享业务概念?

Python:解析数组中大表第一列的最快方法

C++,两个相互需要的类

c# - C# 中带比较器的 HashSet 数组

c++ - 获取二维数组中的所有数字对 C++

c++ - 在桌面程序中嵌入 NoSQL 文档/EAV 数据库,如 SQLite3,但 NoSQL?