结构体赋初值函数,这样对吗?

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:55:36
#include <iostream.h>
const int SETSIZE=50;
struct Set
{
int m[SETSIZE+1];
};
enum Boolean {False,True};
void main()
{
void InitSet(Set &s);
Set x;
InitSet(x);
for (int k=0;k<50;k++)
cout<<x.m[k]<<" ";/***********可这里输出后不是0,全是地址
}
/********************************************************/
void InitSet(Set &s) //初始化s,所有元素为0
{
int m[SETSIZE+1];
for(int i=0;i<SETSIZE+1;i++)
m[i]=0;
}

这个初始化函数写错了,它只初始化了一个局部变量int m[SETSIZE+1];
应该这样写:
void InitSet(Set &s) //初始化s,所有元素为0
{
for(int i=0;i<SETSIZE+1;i++)
s.m[i]=0;
}

void InitSet(Set &s)
{
for(int i=0;i<SETSIZE+1;i++)
s.m[i]=0; //关键是这里
}

你原来的程序只是给临时变量m赋值,按照理解应该是对结构s里的m赋值。
还有你程序里的void InitSet(Set &s);这句也应该去掉。