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

时间:2015-06-05 10:33:39

标签: c++ pointers

我试图了解指针并且无法理解为什么在将"\n";添加到行时使用取消引用运算符来打印值可以正常工作,但由于某种原因我在使用时没有得到任何输出endl;。终端显示endl;没有输出。这与output buffer flushing?

有关
#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);
}

1 个答案:

答案 0 :(得分:5)

您没有初始化i

for (int i; i < 6; i++)

这应该是:

for (int i = 0; i < 6; i++)

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

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

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++)
              ^