最近,我问这个问题在接受采访时:char * p = NULL,cout << p;给人例外
char* p = NULL;
cout << p << endl;
++p;
cout << p << endl;
我给出的答案是第一COUT将打印00000,接下来将打印00001 但是,当我在Visual Studio中选中它,它提供了一个异常: StringFunctions.exe中0x009159F1的第一次机会异常:0xC0000005:访问冲突读取位置0x00000000。 StringFunctions.exe中0x009159F1未处理的异常:0xC0000005:访问冲突读取位置0x00000000。
但它的预期工作如int,float等 有人可以解释这个吗? 感谢帮助!
未定义的行为。 http://stackoverflow.com/a/19180731/1462718和http://stackoverflow.com/a/394774/1462718请参阅“请注意递增包含空指针值严格的指针是未定义的行为”。 – Brandon 2015-03-02 05:31:37
这不是提议的线程的重复。当OP通过增加空指针来调用UB时,他主要关心如何打印指针的地址。 – 2015-03-02 19:16:49