我想將三個結構數組傳遞給一個函數,該函數對存儲在結構數組中的三個數進行排序,但不想將實際值更改爲數組是通過引用傳遞,有我的問題,任何想法接受謝謝:)將結構數組傳遞給函數C
這是我審查代碼:
#include <stdio.h>
#define N 3
typedef struct
{
int digito;
} numbers;
void sort(numbers tabla[], int nro);
void enternums(numbers tabla[], int nro);
int main()
{
static numbers enter[N];
int i, j, tmp;
enternums(enter, N);
printf("Data before entering the function...\n\n");
for (i = 0 ; i < N ; i++)
{
printf("%d\n", enter[i].digito);
}
sort(enter, N);
printf("After entering data function....\n\n");
for (i = 0 ; i < N ; i++)
{
printf("%d\n", enter[i].digito);
}
return 0;
}
void enternums(numbers tabla[], int nro)
{
int i;
for (i = 0 ; i < nro ; i++)
{
printf("Enter a digit for the position %d: ", i);
scanf("%d", &tabla[i].digito);
}
}
void sort(numbers tabla[N], int nro)
{
int i, j, tmp;
for (i = 1 ; i < nro ; i++)
{
j = i;
tmp = tabla[i].digito;
while ((j > 0) && (tmp < tabla[j - 1].digito))
{
tabla[j].digito = tabla[j - 1].digito;
j--;
}
tabla[j].digito = tmp;
}
}
你不需要編寫這樣的代碼,它很難閱讀,你可以像我一樣做。當然,數組並不是通過引用傳遞的。 –
我真的不明白你真正想要什麼,'scanf(「%d」,&tabla [i] .digito);'是你的代碼中的一個潛在的錯誤,因爲你不檢查返回的值,即成功或者'scanf()'失敗。 –
您可以複製傳遞的數組並對其進行排序 – bpgeck