在C语言里,一个有参数的函数调用时不带括号?

请教最后一行unicast_callbacks = {recv_uc};是什么意思?
一个有参数的函数,光写函数名,意思应该是函数指针?那大括号又是什么意思?
一个结构等于一个函数指针加大括号,没看懂,望高手指教。

static void recv_uc(struct unicast_conn *c, const rimeaddr_t *from)
{
printf("unicast message received from %d.%d\n",
from->u8[0], from->u8[1]);
}

struct unicast_callbacks {
void (* recv)(struct unicast_conn *c, const rimeaddr_t *from);
void (* sent)(struct unicast_conn *ptr, int status, int num_tx);
};

static const struct unicast_callbacks unicast_callbacks = {recv_uc};

结构体struct unicast_callbacks有两个函数指针成员。

static const struct unicast_callbacks unicast_callbacks = {recv_uc};
是在定义一个结构体类型struct unicast_callbacks的静态(static)常量(const),常量名是unicast_callbacks,{recv_uc}是在对结构体常量进行初始化,将第一个函数指针赋值为recv_uc。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-04
从main函数开始顺序执行,程序调用到哪个函数。就跳到那个函数的大括号里。执行完大括号内的内容后。。再返回刚才跳出的地方,顺序执行下去。。。如果再遇到函数。就接着跳出。。再跳入。。。这是个不断调用的过程。。
比如你这里。
从main函数开始执行。。遇到fun(p,q),就跳到fun函数的大括号里。。执行完里面的内容后。。接着返回到刚才的地方。。执行下一句printf。。无论main函数在程序的哪个位置。。程序都是从main函数开始。。
第2个回答  2019-01-13
第一点,只有形如type fun(void);形式声明的函数即“无参数类型”可以没有参数,你看不见参数可能是无参,也可能是使用了缺省参数。 第二点,main是有参数的,原型为int main(char* argv[], int argc);你看到的“无参”是缺省使用,实际参数有系统提供。
第3个回答  2019-01-14
那个是结构体赋初值,不是函数调用。
第4个回答  2019-01-14
https://blog.csdn.net/yanxiaolx/article/details/51531632
宏里面参数不加括号容易出错,在使用时尽量加括号

程序1:

#include<stdio.h>

#define SQARE(X) X*X

int main()

{

int n = 10;

int m=SQARE(n);

printf("m=%d\n",m);

return 0;

}

结果:

m=100

请按任意键继续. . .

分析:貌似没有出问题,请看下面两个例子

程序2:

#include<stdio.h>

#define SQARE(X) X*X

int main()

{

int m = SQARE(1 + 3);//1+3*1+3=7

printf("m=%d\n", m);

return 0;

}

结果:

m=7

请按任意键继续. . .

改正程序2:

#include<stdio.h>

#define SQARE(X) (X)*(X)

int main()

{

int m = SQARE(1+3);//(1+3)*(1+3)=1

本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1728067

在C语言里,一个有参数的函数调用时不带括号?
结构体struct unicast_callbacks有两个函数指针成员。static const struct unicast_callbacks unicast_callbacks = {recv_uc};是在定义一个结构体类型struct unicast_callbacks的静态(static)常量(const),常量名是unicast_callbacks,{recv_uc}是在对结构体常量进行初始化,将第一个函数指针赋值为recv_uc。

请问一下在函数调用时候不加那个括号为什么合法,并且输出结果和加了括号...
标准C规定:调用函数的时候,一定要加圆括号,即便,该函数没有形参。声明函数的时候,函数名后一定要加圆括号,即便,白函数没有形参。

C语言中为什么调用函数时不需要加int,void,char,double这些呢?
您好,很高兴回答您的问题。C语言中程序在运行的时候,首先是找到主函数运行的。其余的函数都是在被调用的时候才会运行。那么在被调用之前,就必须要求知道这个函数的具体情况,包括函数返回值的类型,函数名,函数的参数等等,这个叫函数的声明。也就是在调用这个函数时,已经知道了函数返回值的类型,真正...

c语言中函数不带括号可不可以
不可以 函数格式为 返回值 函数名(参数列表){ 函数体 } 无论是参数列表的小括号 还是函数体的大括号 都是不能省略的。

C 语言函数完全指南:创建、调用、参数传递、返回值解析
在C语言中,函数是一段代码块,它在被调用时运行。您可以通过参数将数据传递给函数,这些参数在函数内部用作变量。函数用于执行特定操作,对于重用代码非常关键。例如,main()是一个执行代码的函数,printf()用于向屏幕输出文本。创建函数涉及指定函数名、括号和花括号。例如:`void myFunction() { ......

C语言中主函数main()那括号到底有没用?
所有函数都得有括号,空的括号代表没有参数。你学过高中数学没有,学过函数和自变量的概念吧,这个就说明没有自变量。而括号里有东西的,也就是有传参的函数必然受参数影响和控制,导致函数结果的改变。

C语言函数的调用
一个 C 程序一般由一个主函数和若干个其他函数构成。主函数可以调用其它函数,其它函数也可以相互调用,但其它函数不能调用主函数。在我们的 51 单片机程序中,还有中断服务函数,是当相应的中断到来后自动调用的,不需要也不能由其它函数来调用。函数调用的一般形式是:  函数名 (实参列表);函数...

C语言中都什么样的语句后不加分号
for()可以不加分号也不加大括号,但只有后面只跟一条语句的时候可以不加大括号;if()同for;其他带{}的除了结构体需要加分号外,其余不用加;while()里调用函数的时候也不用加 如 while(scanf()),只是举个例子 正常不会这么写

C语言 函数调用 迷茫~~~
返回函数就是当你经过这个函数处理的功能后所得到的时候。可是是一个数,也可以是指针。也可以是什么都不得到void.参数就是用来代替一个数的未知数 比如你定义时间,用t做参数 当你要计算路程vt(其中v设为常量),当要算一段时间的路程,只要用这个公式,再带入一个t的值就可以了。总之,参数就...

C语言 自定义函数声明时候前面有个*什么意思?调用时候怎么调用?
这说明这个函数会返回一个指针。看具体操作了。比如有这个函数 char * function(int,int);我们可以这么调用 char ch[10];ch = function(..);括号里面填参数。当然我这里是返回的一个char 型指针,那么他返回了一个什么型的指针,你就用个什么型的变量地址去接收他 ...

相似回答