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

Yos*_*osi 3 c++ arrays pointers

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

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

当我跑步时,我得到下一个输出:

 LOOPING, p is 1
 LOOPING, p is -858993460
 LOOPING, p is 4454504
 LOOPING, p is 3032019
Run Code Online (Sandbox Code Playgroud)

为什么我会得到那些奇怪的价值观?我应该只看到"1",因为我循环直到我得到NULL指针,并在每个循环上移动下一个指针.

cni*_*tar 8

while(*p != NULL) {
Run Code Online (Sandbox Code Playgroud)

比较错误有两个原因:

  • *p是一个整数,而不是像NULLimplies 一样的指针
  • 数组不是0终止,所以即使NULL被视为花哨的0,它也行不通

你可以尝试:

int nums[] = {1, 0};
while(*p)
Run Code Online (Sandbox Code Playgroud)