找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1108|回复: 8

请求此程序中define的用法

[复制链接]
发表于 2009-11-5 00:49:26 | 显示全部楼层 |阅读模式 IP:江苏扬州
我看的这个程序,搞不懂其中这行语句的意思,请高手指点,小弟先谢过了!!!
#define E int
程序源代码如下:
#include<iostream.h>
#define E int
const int maxsize=10000;
class sequenlist
{
protected:
E a[maxsize];
int len;
public:
void print()
{
cout<<"顺序表为:";
for(int i=1;i<=len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
void deletel(int i)
{
int j;
if((i<1)||(i>len))
cout<<"position is not corret!"<<endl;
else
{
for(j=i+1;j<=len;j++)
a[j-1]=a[j];
len--;
}
}
void input(int n)
{
for(int j=1;j<=n;j++)
cin>>a[j];
len=n;
}
};
void main()
{
sequenlist L;
E x,y;
int n,j;
cout<<"请输入表中元素个数:";
cin>>n;
cout<<"请输入"<<n<<"个元素,建立顺序表"<<endl;
L.input(n);
L.print();
cout<<"要删除的元素的位置";
cin>>j;
L.deletel(j);
L.print();
}
请教这个define是什么用法?
发表于 2009-11-5 00:49:28 | 显示全部楼层 IP:江苏扬州
将所有的E用INT代替
回复

使用道具 举报

发表于 2009-11-5 00:49:30 | 显示全部楼层 IP:江苏扬州
不过分号中的除外
回复

使用道具 举报

发表于 2009-11-5 00:49:32 | 显示全部楼层 IP:江苏扬州
不好意思哈!
有点不明白您 的意思!
我想问这个程序中define是什么用法?
程序编译出来是完全正确的,可行的!
回复

使用道具 举报

发表于 2009-11-5 00:49:34 | 显示全部楼层 IP:江苏扬州
预编译处理命令,在程序编译前,会将程序中的所有E用INT来代替,然后再编译
回复

使用道具 举报

发表于 2009-11-5 00:49:37 | 显示全部楼层 IP:江苏扬州
哦!
懂点了!
谢谢了!!!
也是说我不用那个语句,然后把程序中所有的E用INT来代替,也OK?
回复

使用道具 举报

发表于 2009-11-5 00:49:39 | 显示全部楼层 IP:江苏扬州
回复

使用道具 举报

发表于 2009-11-5 00:49:40 | 显示全部楼层 IP:江苏扬州
哈哈!
谢谢兄弟了!
回复

使用道具 举报

发表于 2009-11-5 00:49:41 | 显示全部楼层 IP:江苏扬州
1。简单的define定义:
如#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i<MAXTIME){.........}编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用。
2.define的“函数定义”
define可以像函数那样接受一些参数,如下
#define max(x,y) (x)>(y)?(x):(y);
这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用而已。
但是这样做的话存在隐患,例子如下:
#define Add(a,b) a+b;
在一般使用的时候是没有问题的,但是如果遇到如:c * Add(a,b) * d的时候就会出现问题,代数式的本意是a+b然后去和c,d相乘,但是因为使用了define(它只是一个简单的替换),所以式子实际上变成了
c*a + b*d
另外举一个例子:
#define pin (int*);
pin a,b;
本意是a和b都是int型指针,但是实际上变成int* a,b;
a是int型指针,而b是int型变量。
这是应该使用typedef来代替define,这样a和b就都是int型指针了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-11-6 03:05 , Processed in 0.918975 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表