一个C语言定义函数的简单问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 14:36:47
#define product(x) (x*x) 这种定义函数的形式不理解?大家帮忙解释一下,谢谢

这不能算是定义一种函数,只能说是定义了一个宏
在编译时,product(x)就会被替换成右边的表达式(x*x)
例如:
int main()
{
int x;
x=product(5);
cout<<x<<endl;
return 0;
}

在编译时,就会被自动换成
int main()
{
int x;
x=(5*5);
cout<<x<<endl;
return 0;
}

其实理解成一个函数倒也可以,至少容易理解,不过编译过程中是这么进行的,编译系统不会把他当成一个函数,也不会给他分配内存空间。

祝你学习愉快

这是带参数的宏定义

举个例子:
#include<stdio.h>
#define product(x) (x*x)
main()
{
printf("%d\n",product(10));
printf("%d\n",product(2+3));
}
把10原封不动的放到(x*x)中。10*10
把2+3原封不动的放到(x*x)中。2+3*2+3
最好这么写:#define product(x) (x)*(x)

相当于
typedef E (x的类型,int x则是int,long x则是long);
E product(E x){
return(x*x);
}

以上回答均正确,本人就不补充了。但是最后还要罗嗦一句的是 这个是宏定义 宏定义就是简单的字符串代替。。
例如 (1)#define PI 3.14 程序中出现PI就用 3.14代替 注意这个是不带参数的宏
(2)#define product(x) (