取消引用运算符和endl没有输出

kez*_*zos 0 c++ pointers

我试图让我的头围指针,并且无法理解为什么使用dereference运算符来打印一个值在"\n";添加到行时工作正常,但由于某种原因我在使用时没有得到任何输出endl;.终端显示没有输出endl;.这与输出缓冲区刷新有关吗?

#include <iostream>
using namespace std;

int main()
{
    int arrayA[] = {0, 1, 2, 3, 4, 5};
    int * ptr_P;

    ptr_P = arrayA;
    for (int i; i < 6; i++)
    {
        cout << *ptr_P << "\n"; // Works fine, but endl; does not
        ptr_P++;
    }
   return(0);
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*l R 5

你没有初始化i:

for (int i; i < 6; i++)
Run Code Online (Sandbox Code Playgroud)

这应该是:

for (int i = 0; i < 6; i++)
Run Code Online (Sandbox Code Playgroud)

否则你有未定义的行为,你的循环根本不会执行.


请注意,任何启用了适当警告的好编译器都会向您指出这个错误,并为您节省了一些时间和精力:

main.cpp: In function 'int main()':
main.cpp:10:14: warning: 'i' may be used uninitialized in this function [-Wmaybe-uninitialized]
     for (int i; i < 6; i++)
              ^
Run Code Online (Sandbox Code Playgroud)