Tag: 函数参数

使用const参数将参数传递给函数:它更快吗?

例如,考虑一下: int sum(int a, int b) { return a + b; } 与 int sum(const int a, const int b) { return a + b; } 第二种方法通常更快吗? C中的函数参数被复制并发送到函数,因此函数内部的更改不会影响原始值。 我的理由是,在上面的第二个sum ,编译器确定a和b在函数内部没有被修改,所以它可以只传递原始值而不先复制它们。 这就是为什么我认为第二个sum比第一个快。 但我真的不知道。 在上面sum的特定简单示例中,差异(如果有的话)应该是最小的。 编辑: sum例子只是为了说明我的观点。 我不认为在这个特定的例子中应该有很大的差异。 但我想知道在更复杂的情况下,编译器是否可以利用函数参数中的const修饰符来使函数更快。 我怀疑编译器总能确定参数是否在函数内被更改(因此我的第二个问题在下面); 因此我希望当它找到一个const修饰符时,它会做出与没有const修饰符时不同的东西。 问题:一般来说,当一个函数的参数是const时,函数会比它们不是时更快吗? 问题2:通常,C编译器(理论上)是否总能确定函数内是否更改了函数参数?

C:用于交换2D数组中的值的函数

我正在尝试编写一个函数来交换2D数组中的2个元素: void swap(int surface[][], int x1, int y1, int x2, int y2) { int temp = surface[x1][y1]; surface[x1][y1] = surface[x2][y2]; surface[x2][y2] = temp; } 但是当我尝试编译它(gcc)时,我收到此错误消息: Sim_Annealing.c: In function `swap’: Sim_Annealing.c:7: error: invalid use of array with unspecified bounds Sim_Annealing.c:8: error: invalid use of array with unspecified bounds Sim_Annealing.c:8: error: invalid use of array with unspecified […]

处理C中的指针参数

我正在使用一个具有以下签名function的库: void LED_stop_blink_task ( void * callback_parameter ); void指针所代表的实际参数是指向uint32_t的指针,uint32_t是电路板上led的编号。 有没有办法调用此函数而不使用变量来保存数据? 在我的想象中,它会像 LED_stop_blink_task(&35); 或唯一的方法是这样的: uint32_t led_num = 35; LED_stop_blink_task(&led_num); 如果你问我为什么要抛弃变量,那么,我只是好奇它是否可能……

函数声明中的最大参数数

我知道函数定义中参数的最小数量为零,但函数定义中的最大参数数量是多少? 我只是为了知识和好奇而问这个问题,而不是我要写一个真正的function。