函数的返回值可以是指向结构体的指针么

这样可以么
struct carport_information
{
U8 staus;
U8 in_or_out;
U8 number;
U8 floor;
U8 owner_name[10];
U8 IC_number[10];
};
struct carport_information *plan_carport()/*返回值为指向结构体的指针*/
{
struct carport_information *p;/*定义一个指向结构体的指针*/

for(p=carport;p<carport+192;p++)
{
if(p->staus==TRUE)
{
return p;/*返回这个指针*/
}
}
return 0;
高手指教下!!不行的话该怎么修改

函数的返回值可以是指向结构体的指针

例子:
//首先定义结构体
struct lwip_socket {
struct netconn *conn;
struct netbuf *lastdata;
u16_t lastoffset;
u16_t rcvevent;
u16_t sendevent;
u16_t flags;
int err;
};
//定义一个此结构体变量,注意声明为static
static struct lwip_socket sockets[NUM_SOCKETS];
//然后就可以用使用了
static struct lwip_socket *
get_socket(int s)
{
struct lwip_socket *sock;
if ((s < 0) || (s > NUM_SOCKETS)) {
LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%d): invalid\n", s));
set_errno(EBADF);
return NULL;
}
sock = &sockets[s];
if (!sock->conn) {
LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%d): not active\n", s));
set_errno(EBADF);
return NULL;
}
return sock;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
当然可以啊,指针就是用来存放地址的,32位机器大小定死是4个字节,不过和多少位机器有关
你返回结构体类型指针那就说明这个4字节存放地址的p空间存放的地址是结构体类型的,也就是struct carport_information. ,别把结构体想象很特别,它也就是一种变量类型,该怎么定义和使用就和普通的变量一样。
你的程序可能是一段,没太看懂
不过循环不断的return肯定有问题啊,return是一个出口,就代表此函数结束了,那么你循环一成立就立即结束了,我猜想你可能不是想那么用,如果你想保存所有的为true的对象,那么可以用指针数组来存储,或者用链表来存储,最后返回

手机手打,有什么不懂可以继续问追问

你好,非常感谢。。。之所以循环成立就return返回,是因为,我只需找到第一个为true对象,后面的是否为true无关紧要。谢谢。。

本回答被提问者和网友采纳
第2个回答  2015-08-01
nt(*changevar)(int);//你少些了个e 这是一个函数指针,这个changevar指针指向一个这样的函数:这个函数有一个int型参数,返回值也是int.所以if(fb_info.changevar) 的意思就是判断结构体fb_info中的changevar是否为空,等同于if(fb_info.changevar==NULL) . 而(*fb_info.changevar)(con)就是用changevar调用一个con函数了,con函数也是一个只有一个int参数,返回值是int的函数,此时 结构体fb_info的函数指针changevar指向con这个函数。就和普通的变量指针指向一个变量的意思一样的。
第3个回答  2014-09-10
前一个是个函数指针,如果有个函数是这样定义的
int pfunction( )
那就可以用指针指向这个函数
然后调用时就可以这样用p();后一个是指针函数,他的返回值是一个指向整型变量的指针追问

请问你是在回答我的问题么。请不要用复制的来骗赏金

相似回答