我開始使用C++。我想了解不同的 輸出,同時玩這段代碼。循環和內存管理中的C++指針算術?
int main()
{
int i = 3;
int *ptr = &i; //stores address of the i
while(*(ptr)--) //the same as i--
{
cout << *ptr << endl;
}
}
當我運行這段代碼據我所知,deferenced值PTR的 ,這是「我」,獲得1從中減去退出循環 當「我」等於0。但是當我使用while(* ptr--)而不是while(*(ptr) - )我得到一個隨機整數列表,最終會下降到0並且循環中斷。
據我瞭解,當我使用* ptr--我減去的&我(* PTR)每次循環的起始地址字節(一個爲int的大小)。但爲什麼程序最終終止?無論「我」的值是多少,程序都打印23個隨機數字,最後一個數字爲0,循環結束。由於程序內存不足,是否應該不會發生溢出錯誤?
但是,當我使用while(ptr--)程序會進入無限循環。 究竟發生了什麼?
非常感謝。
只因爲一個循環很長並不意味着它是無限的。 – harold
'* ptr - '和'*(ptr) - '完全一樣...... –