#include <iostream>
using namespace std;
int main() {
char* x=0; // initialize pointer character called x equals zero
cout<<x; // print the value of pointer in memory
cout<<5; // print 5 on screen (not executed)
}
第9行未由编译器执行
std::ostream
的 operator<<
对char*
的过载,这会导致您传递给它的指针。
这意味着您尝试将指向0
的指针放置,从而导致不确定的行为。在这种情况下,您的下一个印刷品未显示。
如果要显示地址,则应明确地施放给void*
:
cout<< static_cast<const void*>(x);
您分配了一个char指针变量x = 0,该变量为null并试图放置一个无效的指针,从而导致不确定的行为。指针变量应仅存储另一个变量的地址