最近,我問這個問題在接受採訪時: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