正文
c语言宏定义函数参数 c语言宏定义的数值是什么类型
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
c语言宏定义里带参数是什么意思?
Cc语言宏定义函数参数的宏可以用来替换常数c语言宏定义函数参数,替换表达式c语言宏定义函数参数,仔细把这个程序看完你就明白了,
#includestdio.h
#define SQ(x) ((x)*(x))
#define READ(x) scanf("%d",x)
#define WRITELN(x) printf("%d\n",x)
int main()
{
int x;
READ(x);
WRITELN(SQ(x+1));
return 0;
}
程序输入4 输出25
C语言问题,宏定义中的参数为什么要定义,不是主函数中的参数直接替换吗?
首先你要理解什么是预处理命令#define。它的作用是:在编译之前,对#define的参数在作用范围内进行替换操作。如:
#define A 2
int b = A; // 在编译之前,这行代码会被替换成: int b = 2;
所以#define只是替换,可没有定义相关的参数。用这道题来举个例子:
#define JH(a, b, t) t=a; a=b; b=t;
int t, a=1, b=2;
JH(a, b, t); // 在编译之前,这行代码会被替换成: t=a; a=b; b=t;
所以如果没有定义t,那么t=a; b=t; 就会报错。而且如果你没定义t,你又是如何使用
JH(a, b, t)呢?因为你必须写出第三个参数。还有就是要注意在最后它少加了一个分号:
#define JH(a, b, t) t=a; a=b; b=t // 题目中t后面没有分号
这是为了以函数的形式使用宏定义,同时也表明#define只是简单的替换,并不是执行代码。这样的用法是十分常见的。
c语言有没有把一个宏作为函数参数的。
的确是不可以当函数的参数,但是可以换一个间接的思路。
将宏定义放在另一个函数里,通过取地址的方式来把你原先想去处理的参数进行处理。
示例如下:
#includestdio.h
#define cal(m) {m = m + 10;}
int main(void)
{
int Val_0 = 20;
test(Val_0);
printf("%d", Val_0);
system("pause");
}
int test(int *n)
{
cal(*n);
printf("hello\n");
return 0;
}
c语言宏定义函数参数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言宏定义的数值是什么类型、c语言宏定义函数参数的信息别忘了在本站进行查找喔。