我试图了解指针并且无法理解为什么在将"\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);
}
答案 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++)
^