2014-01-09 51 views
0

嗨,我有一個關於指針的問題;指針++,未定義的行爲

char * bf=new char[5]; 

char* p=bf+5; 

p--是否工作?或者會p--做出一些未定義的錯誤?由於bf+5未定義?

謝謝。

+3

@RaviH:那會證明什麼? –

+0

它會證明是否拋出「一些未定義的錯誤」或不。在不問問stackoverflow之前,如果沒有嘗試或嘗試這麼簡單的事情,學習編程並不是一個好方法。 – RaviH

+6

@RaviH它可能是未定義的行爲,並且程序仍然可以執行而不會產生錯誤。大多數用戶強調,UB可以讓你掉下天空或者爲pluto打開一個蟲洞,但是它也可以靜靜地繼續下去,看起來很成功,直到你嘗試在不同的環境下運行它。 – ApproachingDarknessFish

回答

3

沒有什麼不確定的約

char* bf=new char[5]; 
char* p=bf+5; 

但普將指向離數組的結尾。只要數組沒有被破壞,p--會將您帶回數組的最後一個元素。

1

p--在這種情況下保證指向數組的最後一個元素,沒有UB。

相關問題