[英]Passing an array as an argument to a function pointer in C
我目前正在研究指向函数的指针,并一直在研究排序数组函数。 关键是我在函数中输入了一个数字序列,程序将按升序重新排列。 当我按值调用函数时,它工作得很好(我认为这就是您的调用方式)。 但是,当我尝试为函数分配一个指针并尝试使用该指针而不是函数本身时,它将返回一堆错误。 我确定问题是由于我将数组作为参数传递给了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;
}
该函数的第一个参数是指向int
的指针(即int *
),而不是int
。
void (*fptr)(int array, int SIZE);
应该
void (*fptr)(int *array, int SIZE);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.