【发布时间】:2010-07-02 10:22:39
【问题描述】:
我需要创建 GdkPixBuf 集合。我尝试在 GList 中保存 pixbufs - mw->disp_list:
GtkTreeIter iter;
int i = 0;
for (i; i < g_list_length(list) - 1; ++i)
{
char* file = image_list_get_current_file_path( list );
mw->p1 = gdk_pixbuf_new_from_file(file,NULL);
mw->p1 = scale_pix(mw->p1,128);
mw->disp_list = g_list_append (mw->disp_list, mw->p1);
if (!mw->img_list->current->next )
image_list_get_first(mw->img_list);
else
image_list_get_next(mw->img_list);
}
其中 p1 - 它是 GtkPixBuf*。
但是当我尝试在另一个函数中使用 mw->disp_list 时,我发现它为 NULL。怎么了?
谢谢。
【问题讨论】:
-
首先,我注意到 for 循环很奇怪;你不需要 for 的第一部分,如果你在它外面初始化循环变量:
for(; i < ...没问题,而for(i; i <...也可以工作,但我没有理由被评估;通常你写一个像for(i=0; i < ...这样的循环,你可以简单地写int i;而不是int i = 0; -
关于循环的另一个说明;
i < g_list_length(list)是正确的;除非使用 -1,否则您的意思是您想再循环一个列表的长度(假设您想使用 i 作为“索引”;在这种情况下,您会错过最后一个可索引元素;没有 -1,您循环一个列表中每个元素的时间)