如何用空值表示结构体

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:38:22
有一个结构体,如
typedef struct _CMPP_HEAD
{
int size; // 数据报的长度
int cmdid; // 命令码
int seqid; // 流水号
} CMPP_HEAD;
我定义一个函数
CMPP_HEAD GetHead()
{
if(搜索条件成立)
return 找到的值;
else
return NULL;
}
这样一执行就出错,NULL值不能代表结构体,必须将上面函数的返回值类型改成指针型,如:CMPP_HEAD* GetHead()才行,可是我如果实在不想用指针来返回,就是想返回一个实例该怎么办呢,如何表示这个结构体为空?请教高手了

C++上的方法是这样的
bool GetHead(CMPP_HEAD& o)
{
if(搜索条件成立)
{
o = 找到的值
return true;

}
else
return false;

}
C语言的话 可以用指针参数传址调用

CMPP_HEAD GetHead()
{
CMPP_HEAD tmp;
memset(&tmp,0,sizeof(CMPP_HEAD))

if(搜索条件成立)
return 找到的值;
else
return tmp;
}

这个即使做到也太曲线了吧,,
不如把函数改为:
BOOL GetHead(CMPP_HEAD *phead)
{
if()
{
return TRUE;
}
else
{
return FALSE;
}
}
用指针来返回不就好了,

CMPP_HEAD GetHead()
{
if(搜索条件成立)
return 找到的值;
else{
CMPP_HEAD ret={ 0, 0, 0}
return ret;
}
}

肯定要用指针啊,无论你用什么方法去表示空结构体,结构体实例的存在都不符合程序空间精简的原则啊.

指针最好