在c中,要想在函数内部改变参数的值并被调用函数获悉则必须以指针为参数或者用全局变量。不过,宏也可以有类似的效果, 一例如下:
#include
#define set_if(a, b) do {if((a) > (b)) a = b; } while (0);
int main()
{
int i = 5;
set_if(i, 3);
printf("i = %d\n", i);
return 0;
}
这个在小程序中或许不被注意到,但在大程序中稍不留意就会出错,可谓是一个大陷阱。还是尽量少用。
阅读(1669) | 评论(0) | 转发(0) |