我有functon是轉換列表數組:轉換列表陣列
void* list_to_array(SList* list)
{
int i;
int array_size = list_get_length(list);
void* array[array_size];
for (i = 0; i < array_size; i++)
{
array[i] = list_get_n_data(list,i);
}
return *array;
}
但是當我嘗試測試它:
int* a = (int*)list_to_array(list);
printf("%d" (int)a);
它的確定。我看到第一個元素。但是,當我試圖讓第二個或第三個元素:
int* a = (int*)list_to_array(list);
a++;
printf("%d" (int)a);
我看到的第一個元素+ 4,如果我嘗試獲得第三個元素我看到第一個元素值+ 8等..爲什麼呢?怎麼了?
謝謝
你只返回數組的第一個元素。不知道剩下的東西,什麼都不能說(除非你不應該想到返回指向局部變量的指針)。 – 2010-08-18 15:23:17