| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:请求此程序中define的用法
只看楼主 加入收藏
ylwuwei
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-2
收藏
 问题点数:0 回复次数:10 
请求此程序中define的用法
我看的这个程序,搞不懂其中这行语句的意思,请高手指点,小弟先谢过了!!!
#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是什么用法?
搜索更多相关主题的帖子: define 用法 请求 
2007-04-02 16:23
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
将所有的E用INT代替

雁无留踪之意,水无取影之心
2007-04-02 18:39
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
不过分号中的除外

雁无留踪之意,水无取影之心
2007-04-02 18:40
ylwuwei
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-2
收藏
得分:0 
不好意思哈!
有点不明白您 的意思!
我想问这个程序中define是什么用法?
程序编译出来是完全正确的,可行的!

为了明天的美好! 努力,发奋!!!
2007-04-02 19:08
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
预编译处理命令,在程序编译前,会将程序中的所有E用INT来代替,然后再编译

雁无留踪之意,水无取影之心
2007-04-02 19:09
ylwuwei
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-2
收藏
得分:0 
哦!
懂点了!
谢谢了!!!
也是说我不用那个语句,然后把程序中所有的E用INT来代替,也OK?

为了明天的美好! 努力,发奋!!!
2007-04-02 19:12
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

雁无留踪之意,水无取影之心
2007-04-02 19:13
ylwuwei
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-2
收藏
得分:0 
哈哈!
谢谢兄弟了!

为了明天的美好! 努力,发奋!!!
2007-04-02 19:14
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 

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型指针了。


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-02 23:13
cpluslover
Rank: 1
等 级:新手上路
威 望:1
帖 子:91
专家分:0
注 册:2006-12-13
收藏
得分:0 

“运行正确”的程序不见得是高质量的程序
2007-04-03 09:31
快速回复:请求此程序中define的用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026497 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved