[英]Returning a pointer in C
这是我第一次在这里问。 我只是想知道此代码块的“返回”是否正确,尤其是第一个。
tVideo* getVideo(int id, tTblVideo* table){
tVideo* videoFound = NULL;
int i;
for(i = 0; i < table->length; i++){
if(table->data[i]->mediaID == id) return *table->data[i];
}
return videoFound;
}
编辑:添加tTblVideo定义:
typedef struct {
/* Number of stored files */
int length;
/* Array of video files */
tVideo *data;
} tTblVideo;
从以下代码行:
if(table->data[i]->mediaID == id) return *table->data[i];
这表明table->data[i]
应该是指向具有mediaID
成员的结构的指针。 但是, return
语句取消引用此指针,这意味着它将返回结构对象,而不是结构的指针。 基于此,我想说您不应该将值取消引用到return
:
if(table->data[i]->mediaID == id) return table->data[i];
但是,您对tTblVideo
的typedef
显示data
成员是tVideo
的指针。 您的函数无法编译。 最小的修正是使用正确的结构成员访问运算符,并返回找到的元素的地址。
if(table->data[i].mediaID == id) return &table->data[i];
tVideo*
table->data
的类型为tVideo*
,因此tVideo*
table->data[i]
的类型为tVideo
。 要返回指向数组条目的指针,您需要获取该条目的地址 :
if(table->data[i].mediaID == id) return &table->data[i];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.