将数组作为参数传递给C中的函数指针
我目前正在研究函数指针,并一直在练习排序数组函数。 关键是我在函数中输入一系列数字,程序将按升序重新排列。当我执行按值调用函数时,它工作得很好(我想这就是您如何调用它的)。但是,当我尝试将指针分配给函数并尝试使用该指针而不是函数本身时,它会返回一系列错误。我确信问题是由于我将数组作为参数传递给函数指针。这是我的密码:将数组作为参数传递给C中的函数指针,c,arrays,function,pointers,arguments,C,Arrays,Function,Pointers,Arguments,我目前正在研究函数指针,并一直在练习排序数组函数。 关键是我在函数中输入一系列数字,程序将按升序重新排列。当我执行按值调用函数时,它工作得很好(我想这就是您如何调用它的)。但是,当我尝试将指针分配给函数并尝试使用该指针而不是函数本身时,它会返回一系列错误。我确信问题是由于我将数组作为参数传递给函数指针。这是我的密码: #include<stdio.h> #define SIZE 10 void sort(int a[], int size); void swap(int *elt1
#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;
}
#包括
#定义尺寸10
无效排序(int a[],int size);
无效掉期(int*elt1,int*elt2);
main()
{
int i;int数组[SIZE]={1,9,3,2,4100,43,23,32,12};
void(*fptr)(整数数组,整数大小);
fptr=&sort;
(*fptr)(阵列、大小);
/*排序(数组、大小)*/
对于(i=0;i函数的第一个参数是指向int
(即int*
)的指针,而不是int
void (*fptr)(int array, int SIZE);
应该是
void (*fptr)(int *array, int SIZE);
void(*fptr)(int数组,int大小)
的类型似乎与void排序(int a[],int大小)
@Jack的类型不尽相同,但它们是。@H2CO3和int
以及指向int
的指针?事实上,我指出了同样的问题,所以我不明白你的意思。@H2CO3帮助慢家伙(我)。当int
与int*
同义时(intptr\t
not resisting=P)@H2CO3必须对其进行限定,或者我只知道您会将其带到表中=PH2CO3,谢谢,但它仍然不起作用。。下面是我得到的结果:sortpointeragain.c:9:错误:预期';','或')'before numeric constant sortpointeragain.c:10:error:'fptr'未声明(首次在此函数中使用)sortpointeragain.c:10:error:(每个未声明的标识符只报告一次sortpointeragain.c:10:error:对于它出现在其中的每个函数。)@user2059456:是否注意到此处的第二个参数:void(*fptr(int-array,int-SIZE)
与#define
同名?发生的情况是预处理器将其替换为void(*fptr)(int-array,int-10)
这显然是不正确的。请使用其他名称。是的,我尝试将大小定义为10,并将其用作数组的大小。我将尝试使用其他名称。请稍后与Jack man联系。你说得对!!!但为什么我不能这样做呢?我将大小定义为10,这是一个int,指向函数的指针需要一个in所以应该没问题吧???哦,我明白了,指针期望的是一个整数类型的变量,而不仅仅是一个数字…我说的对吗?