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;
答案 0 :(得分:3)
从这行代码:
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];
但是,typedef
tTblVideo
表示data
成员是指向tVideo
的指针。你的函数不会编译。最小的修正是使用正确的结构成员访问运算符,并返回找到的元素的地址。
if(table->data[i].mediaID == id) return &table->data[i];
答案 1 :(得分:1)
table->data
的类型为tVideo*
,因此table->data[i]
的类型为tVideo
。要返回指向数组条目的指针,您需要获取该条目的地址:
if(table->data[i].mediaID == id) return &table->data[i];