对于 exp:这个程序对我不起作用.. 任何人都可以向我解释如何正确使用在此程序中使用函数指针的方法 该程序给我运行时错误
程序应该是通用的并返回任何给定数组的大小
#include<stdio.h>
#include<string.h>
int ReturnSize_INT(void *a)
{
a = (int*)a;
int count = 0 ;
int *p = (int*)a;
while(p != NULL)
{
count++;
p++;
}
return count;
}
int ReturnSize_char(void *a)
{
a = (char*)a;
int count = 0 ;
char *p = (char*)a;
while(p != NULL)
{
count++;
p++;
}
return count;
}
int ReturnSize_float(void *a)
{
a = (int*)a;
int count = 0 ;
float *p = (float*)a;
while(p != NULL)
{
count++;
p++;
}
return count;
}
int main()
{
int a [] = {1,2,5,7,8};
char b[]={'a','b','c','\0'};
float c [] = {2.75,5.25,7.27,4.25};
int (*ReturnSize)(void *e);
ReturnSize = ReturnSize_INT;
printf("%d",ReturnSize(&a));
return 0;
}
最佳答案
将 a
传递给函数 - 而不是 &a
。数组的名称是指向数组开头的指针。
printf("%d",ReturnSize(a));
其次,数据数组中没有终止符。您可以使用标称值,例如 -1。请注意,指针 p 被取消引用 (*p
) 以获取 p 指向的值:
int a [] = {1,2,5,7,8,-1}; // in main
int ReturnSize_INT(void *a)
{
a = (int*)a;
int count = 0 ;
int *p = (int*)a;
while(*p != -1)
{
count++;
p++;
}
return count;
}
关于c - 如何使用指向函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458211/