注册 登录
编程论坛 C++教室

数据结构的问题。

a3895177 发布于 2011-01-11 11:50, 886 次点击
程序代码:
void traversal(Object *obj)
{
    for (int i = 0 ;i<20; i++)
    {
        if (obj[i].nId==NULL)
        {
            cout<<"物品编号:"<<obj[i].nId+1<<endl;
            cout<<"物品名称:"<<obj[i].szName<<endl;
            cout<<"物品位置:"<<obj[i].szAddr<<endl;
            cout<<endl;
        }
    }
}struct Object
{
    int     nId;            //编号
    char szName[20];    //名字
    char szAddr[50];    //存放位置
};

这个是一个遍历的函数。由指针传入。
下面的代码就是那个结构体的定义。
问题就是:如何判断结构体为空。
我尝试这用结构体里面的某一个变量,比如:nId;
使用:if (obj[i].nId!=NULL)
判断这个时候是否为空。如果不为空的话,那么就输入数据。
可是奇怪的是:我使用obj[i].nId==NULL(即是为空),能正确输入。
而使用:if (obj[i].nId!=NULL)(即是不为空),却输入了烫烫烫烫烫烫烫烫之类的字符。
4 回复
#2
pkwangxinjun2011-01-11 13:13
你把下标往前推一位试试  要不行 把你的源码给我发一下  我给你看看
#3
li_danwang2011-01-11 14:36
这是么情况 你怎么输入的? int     nId;     跟NULL比较别扭哇
#4
a38951772011-01-11 15:31
那换个角度问,结构体如何判断为空?
#5
qq10235692232011-01-11 18:25
void traversal(Object *obj)
{
    for (int i = 0 ;i<20; i++)
    {
        if (obj[i]->nId!=0)  //大哥,obj是指针,不是变量啊.若nId为0,那么为空,否则输出信息。前提把所有的结构变量的nId先置0再赋值.
        {
            cout<<"物品编号:"<<obj[i]->nId+1<<endl;
            cout<<"物品名称:"<<obj[i]->szName<<endl;
            cout<<"物品位置:"<<obj[i]->szAddr<<endl;
            cout<<endl;
        }
    }
}

[ 本帖最后由 qq1023569223 于 2011-1-11 18:27 编辑 ]
1