| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 874 人关注过本帖
标题:为何要这样初始化?
只看楼主 加入收藏
一刀客
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-10-26
收藏
 问题点数:0 回复次数:7 
为何要这样初始化?
#include<stdio.h>
#define datatype1 int
#define maxsize 15
typedef struct
{
datatype1 data[maxsize];
int top;
}seqstack;
/*栈初始化操作函数*/
void initstack(seqstack *s)
{
int i;
for(i=0;i<maxsize;i++)
s->data[i]='\0';
s->top=0;
}

初始化空栈不是中用s->top=0;就行了吗?
'\0'是空字符串吧
干嘛还要s->data[i]='\0';呢?
是不是怕申请得来的内存有残留数据?
即使有残留数据,等下有数据入栈的时候不是会覆盖它吗?
还有, 经常看到这种写法#define datatype1 int,
直接用int不好吗?干嘛要写datatype1这么一大串 ?我看不出有什么好处。

搜索更多相关主题的帖子: define 数据 int data include 
2007-11-03 08:52
shlg1229
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-9-24
收藏
得分:0 
我又来了
#define datatype1 int 这是宏定义呀。这使得程序的可读性增强啊,datatype1告诉你这个是数据的类型,英文简写好看懂啊。
注意拉data[i]是数组啊
初始化还可以为
void initstack(seqstack &s){
s.base=(sElemType *)malloc(STACK_INIT_SIZE*sizeof(sElemType));
if(!s.base) exit (OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return ok'

个人意见,不代表官方看法
2007-11-03 10:59
一刀客
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-10-26
收藏
得分:0 
回复:(shlg1229)我又来了#define datatype1 int 这...
感谢你了!
只是你只解决我一个问题
还有 你的初始化更复杂

责人之心责己 宽己之心宽人
2007-11-03 11:58
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 
s-&gt;top[i]='\0'实际上与s-&gt;top[i]=0等价

英者自知,雄者自胜
2007-11-03 12:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

看被赋值的类型是什么.
'\0'的值为0.


倚天照海花无数,流水高山心自知。
2007-11-03 13:01
一刀客
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-10-26
收藏
得分:0 
收到!

责人之心责己 宽己之心宽人
2007-11-03 13:42
作弊
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-11-3
收藏
得分:0 
#include<stdio.h>
#define datatype1 string
#define maxsize 15
typedef struct
{
datatype1 data[maxsize];
int top;
}seqstack;
/*栈初始化操作函数*/
void initstack(seqstack *s)
{
int i;
for(i=0;i<maxsize;i++)
s->data[i]='\0';
s->top=0;
}

#include<stdio.h>
#define datatype1 char
#define maxsize 15
typedef struct
{
datatype1 data[maxsize];
int top;
}seqstack;
/*栈初始化操作函数*/
void initstack(seqstack *s)
{
int i;
for(i=0;i<maxsize;i++)
s->data[i]='\0';
s->top=0;
}
2007-11-04 09:42
作弊
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-11-3
收藏
得分:0 

程序的 反复使用性 提高了 只需要修改 header file

2007-11-04 09:43
快速回复:为何要这样初始化?
数据加载中...
 
   



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

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