如何解决变量看起来像一个函数指针
char *getoccupier(int roomno)
{
//...
}
int main()
{
int j;
char *getoccupier(int),*p;
for (j = 1; j <= NROOMS; j++)
{
if (p == getoccupier(j))
{
//...
}
}
}
在我看到的主要功能中
*getoccupier(int)
变量。
我以为它是函数指针,但我认为不是。
函数指针需要(*getoccupier)(int)
之类的“()”,但没有。
那是什么?
解决方法
对于初学者来说,您的意思似乎是
if ( ( p = getoccupier(j) )){
或
if ( ( p = getoccupier(j) ) != NULL ){
代替
if (p == getoccupier(j)){
在main函数之内
char *getoccupier(int),*p;
有一个函数getoccupier的块范围函数声明。
尽管没有链接说明符extern,但函数声明具有外部链接。因此,您可能具有相同功能的多个声明。
请注意,在与函数定义不同的函数声明中可以省略参数名称。
另外,在一个声明中,您可以声明多个声明器,例如
char c,*s,f( int );
其中声明了c
类型的对象char
,s
类型的指针char *
和{类型的函数f
{1}}。
这是一个演示程序。
char( int )
其输出为
#include <stdio.h>
void hello( void ) { puts( "Hello"); }
int main(void)
{
hello();
int hello = 10;
printf( "Hello = %d\n",hello );
{
void hello( void );
hello();
}
printf( "Hello = %d\n",hello );
return 0;
}
,
char *getoccupier(int),*p;
声明getoccupier
是一个带有int
参数并返回指向char
(a char *
)的指针的函数,并声明{ {1}}是指向p
的指针。
char *getoccupier(int),*p;
...
p == getoccupier(j)
getoccupier
是一个使用整数参数并返回pointer to char
(即p
类型)的函数。解析为
char * (getoccupier) (int)
与
相反char * (*getoccupier) (int)
这意味着pointer to function taking an integer parameter and returning pointer to char
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。