我遇到了一些相當奇怪的東西,我找不到任何合理的東西。 我寫了這樣的函數返回一個int指針這樣的:錯誤地使用指針或錯誤?
int* arr()
{
int array[3]={1,2,3};
return array;
}
現在
主,我宣佈一個int指針像K:
int*k=arr();
它的工作完全確定,但這裏是奇怪的是,我只能使用其中一個塊,k [0]或k [1]或k [3],它會打印出正確的相應數字,但是當想要在這樣的情況下使用它時,只有第一個將正確打印:
for(int i=0;i<3;i++)
{
cout<<k[i]<<endl;
}
對於k [0],打印的值是正確的,但對於其他人來說,這是奇怪的。 我想知道如果我沒有使用指針正確的原因,我爲什麼可以訪問每個塊?
[增加了C++語言的標籤;請糾正,如果這是錯誤的。] – DSM
也許for循環引入一個新的堆棧幀,破壞你的數組。 –