gpt4 book ai didi

c - 变量看起来像一个函数指针

转载 作者:行者123 更新时间:2023-12-03 19:04:26 25 4
gpt4 key购买 nike

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类型 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;
}
它的输出是
Hello
Hello = 10
Hello
Hello = 10

关于c - 变量看起来像一个函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64027146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com