私は現在、関数へのポインターを研究しており、ソート配列関数で練習しています。ポイントは、一連の数値を関数に入力すると、プログラムがそれを昇順に再配置することです。値関数による呼び出しを行うと、うまく機能しました(それがあなたの呼び出し方だと思います)。ただし、関数にポインターを割り当てて、関数自体の代わりにそのポインターを使用しようとすると、一連のエラーが返されます。この問題は、配列を引数として関数 POINTER に渡していることが原因であると確信しています。これが私のコードです:
#include<stdio.h>
#define SIZE 10
void sort(int a[], int size);
void swap(int *elt1, int *elt2);
main()
{
int i; int array[SIZE]= {1,9,3,2,4,100,43,23,32,12};
void (*fptr)(int array, int SIZE);
fptr = &sort;
(*fptr)(array,SIZE);
/*sort(array, SIZE);*/
for(i=0;i<SIZE;i++)
{
printf("%d\n", array[i]);
}
return 0;
}
void sort(int a[], int size)
{
int pass, j;
for(pass = 0; pass<size;pass++)
{
for(j=0;j<size;j++)
{
if(a[j]>a[j+1])
{
swap(&a[j], &a[j+1]);
}
}
}
}
void swap(int *elt1, int *elt2)
{
int hold;
hold = *elt1;
*elt1 = *elt2;
*elt2 = hold;
}