C 指针作为函数的声明?
首先我要申报C 指针作为函数的声明?,c,pointers,C,Pointers,首先我要申报 char (*x)(int field); char yes_or_no(int); char yes_or_no(int field) { if(field==1) return 'y'; else return 'n'; } x=&yes_or_no; printf("Now we can call this function by using the pointer *x by using (*x)(1),\nwhich gives
char (*x)(int field);
char yes_or_no(int);
char yes_or_no(int field)
{
if(field==1)
return 'y';
else
return 'n';
}
x=&yes_or_no;
printf("Now we can call this function by using the pointer *x by using (*x)(1),\nwhich gives us: \n'%c'\n", (*x)(1));
这可以正常工作,但现在我得做点什么了
char *y(int field);
哪个是或可能是函数的声明?我怎样才能对这最后一句话/声明“有所作为”
问候。函数指针的类型为:
char *(*x) (int);
宣言:
char *y(int field);
请注意,一元运算符&
不需要具有函数的地址。例如:
#include <stdio.h>
const char *(*x) (int);
const char *yes_or_no(int field);
const char *yes_or_no(int field)
{
if (field == 1)
return "y";
else
return "n";
}
int main(void)
{
x = yes_or_no;
printf("'%s'\n", x(1));
return 0;
}
#包括
常量字符*(*x)(int);
常量字符*是或否(整型字段);
常量字符*是或否(整型字段)
{
如果(字段==1)
返回“y”;
其他的
返回“n”;
}
内部主(空)
{
x=是或否;
printf(“%s'\n”,x(1));
返回0;
}
函数指针的类型为:
char *(*x) (int);
宣言:
char *y(int field);
请注意,一元运算符&
不需要具有函数的地址。例如:
#include <stdio.h>
const char *(*x) (int);
const char *yes_or_no(int field);
const char *yes_or_no(int field)
{
if (field == 1)
return "y";
else
return "n";
}
int main(void)
{
x = yes_or_no;
printf("'%s'\n", x(1));
return 0;
}
#包括
常量字符*(*x)(int);
常量字符*是或否(整型字段);
常量字符*是或否(整型字段)
{
如果(字段==1)
返回“y”;
其他的
返回“n”;
}
内部主(空)
{
x=是或否;
printf(“%s'\n”,x(1));
返回0;
}
声明函数变量x
,返回char
char * y(int field);
声明一个函数y()
返回char*
注意第二个声明中缺少的一对括号()
将声明seocnd情况的函数变量:
char * (*yvar)(int field);
声明函数变量x
,返回char
char * y(int field);
声明一个函数y()
返回char*
注意第二个声明中缺少的一对括号()
将声明seocnd情况的函数变量:
char * (*yvar)(int field);
char*y(int字段)
是函数的声明,不能是。。注意char*y(int字段)
是一个函数的声明,它返回一个指向char
(并接受一个int
参数)的指针代码>也将起作用<代码>x=&是或否代码>不是必需的。char*y(int字段)
是函数的声明,不能。。注意char*y(int字段)
是一个函数的声明,它返回一个指向char
(并接受一个int
参数)的指针代码>也将起作用<代码>x=&是或否代码>不是必需的。常用术语是函数指针,而不是变量,因为变量本身就是值的容器。其中,as指针是唯一地址的容器,对于函数来说是有意义的,因为它只包含函数代码段的起始地址+否则你是对的,我在这里是不准确的。无论如何,我觉得“变量”这个术语对理解是有意义的。所以我建议“函数指针变量”作为合理的折衷方案@fayyazkl常用的术语是函数指针,而不是变量,因为变量本身就是值的容器。其中,as指针是唯一地址的容器,对于函数来说是有意义的,因为它只包含函数代码段的起始地址+否则你是对的,我在这里是不准确的。无论如何,我觉得“变量”这个术语对理解是有意义的。所以我建议“函数指针变量”作为合理的折衷方案@Fayyazkl您应该提到char*y(int字段);实际上是一个名为y的函数,返回char*。它不是函数指针。()起了很大的作用。您应该提到char*y(int字段);实际上是一个名为y的函数,返回char*。它不是函数指针。答案()完全不同。