-1
當我在交換函數中傳遞參數時,我期望指數爲a[0]
和a[1]
的輸出。但輸出結果分別顯示a[1]
和a[2]
的數據。將數組作爲參數傳遞並交換數據 - 意外的數據
但是爲什麼?以及如何改進它?
以下是我的代碼。
#include <stdio.h>
#include <stdlib.h>
int add(int *array,int max);
void swap(int *array,int max,int *x,int *y);
int main()
{
int sum,i,j=0,a[10],max;
scanf("%d",&max);
for(i=0;i<max;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<max;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
//for(i=0;i<max;i++)
{
swap(a,max,&a[0],&a[1]);
}
sum=add(a,max); // array name is same as address of array//or sum=add(&a[0],max);
printf("%d",sum);
}
int add(int *array,int max)
{
int sum=0,i=0;
while(i<max)
{
sum=sum +array[i];
i++;
}
return sum;
}
void swap(int *a,int max, int *x,int *y)
{
int i;
/* int temp=0;
temp=a[*x];
a[*x]=a[*y];
a[*y]=temp;*/
printf("\n%d %d",a[*x],a[*y]);
for(i=0;i<max;i++)
{
printf("\n %d",a[i]);
}
printf("\n");
}
它並沒有超出限制,因爲我總是訪問數組,對於i <10,也是a [0] = 1,a [1] = 2,a [2] = 3等等直到a [4] = 5,因爲我採取最大= 5。對不起,我是新手編程 –
@deepakpandey在詢問用戶輸入時,你如何保證'[0] == 1'總是如此? –
@deepakpandey沒什麼可對不起的朋友,只要邏輯思考。 :-) –