C 如何使用指向函数的指针?
例如:这个程序对我不起作用。。 有人能向我解释一下如何正确使用这个程序中的函数指针吗 程序给了我运行时错误 该程序应该是泛型的,并返回任何给定数组的大小C 如何使用指向函数的指针?,c,function-pointers,C,Function Pointers,例如:这个程序对我不起作用。。 有人能向我解释一下如何正确使用这个程序中的函数指针吗 程序给了我运行时错误 该程序应该是泛型的,并返回任何给定数组的大小 #include<stdio.h> #include<string.h> int ReturnSize_INT(void *a) { a = (int*)a; int count = 0 ; int *p = (int*)a; while(p != NULL) {
#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;
}
#包括
#包括
int ReturnSize_int(void*a)
{
a=(int*)a;
整数计数=0;
int*p=(int*)a;
while(p!=NULL)
{
计数++;
p++;
}
返回计数;
}
int ReturnSize_char(void*a)
{
a=(char*)a;
整数计数=0;
char*p=(char*)a;
while(p!=NULL)
{
计数++;
p++;
}
返回计数;
}
int ReturnSize_float(void*a)
{
a=(int*)a;
整数计数=0;
浮点数*p=(浮点数*)a;
while(p!=NULL)
{
计数++;
p++;
}
返回计数;
}
int main()
{
int a[]={1,2,5,7,8};
字符b[]={'a','b','c','\0'};
浮点数c[]={2.75,5.25,7.27,4.25};
int(*ReturnSize)(空格*e);
ReturnSize=ReturnSize\u INT;
printf(“%d”,ReturnSize(&a));
返回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;
}
出了什么问题?编译错误?运行时问题?
a=(int*)a代码>-什么?为什么?while(p!=NULL)
-p
永远不会NULL
,除非它溢出。。。你到底在用这段代码做什么?a=(int*)a-假设把a变成int*指针否?如果p永远不能达到null,那么数组0的结尾是什么?给了我运行时错误