我有一個函數(從教程)爲什麼數組指針打印不正確?
int* func(int *arr, int n){
if(n==1 || n==0)
return arr;
else{
int temp=arr[0];
arr[0]=arr[n-1];
arr[n-1]=temp;
return func(++arr,n-2);
}
}
我幹運行它,得到它會扭轉陣列,非常好。我得到的結果時,使用這段代碼
int x[]={1,2,3,4,5,6,7,8,9};
int i;
func(x,9);
for(i=0;i<9;i++)
{
printf("%d\n",x[i]);
}
但在使用指針下面的代碼
int x[]={1,2,3,4,5,6,7,8,9};
int* p;
p = func(x,9);
for(i=0;i<9;i++)
{
printf("%d\n",*(p+i));
}
弱時請說明你回答讓垃圾值我預期。
哪裏指針通過FUNC點回來了? – Broseph
@Broseph'p = func(x,9);'也許?我不確定。 –
查看func的代碼,並按照指針arr。它會發生什麼? – Broseph