2014-10-09 38 views
0

我正在嘗試編寫一個返回數據數組起始地址的函數。返回數據數組的起始地址

// Return starting address of the data array 
    data_t *get_vec_start(vec_ptr v) 
    { 
     data_t *address = v->data[0]; 
     return address; 
    } 

我收到一個錯誤,指出:

vec.c: In function ‘get_vec_start’: 
vec.c:75:20: error: incompatible types when initializing type ‘data_t *’ using type ‘data_t’ 
data_t *address = v->data[0]; 
       ^
make: *** [vec.o] Error 1 

我新的C和不理解的錯誤消息。謝謝。

+1

相信'V->數據[0] '返回數組中第一個單元格的值,而不是內存中的地址。因此,它不是'data_t *'類型。 – Grice 2014-10-09 15:58:08

回答

3

return v->data;return &(v->data[0]);工作。

+0

謝謝!返回v->數據做了詭計! – Shannon 2014-10-09 16:02:07

1

您試圖將實際數據分配給變量address而不是分配0th元素的實際地址!

嘗試這樣:

data_t* address = &(v->data[0]); 
1

它說在那裏:不兼容的類型初始化類型時,「data_t *」使用型「data_t」。

您必須指定數組的地址。

data_t* a = &v->data[0] ; 

data_t* a = v->data ; 

V->數據[0]是data_t類型和& V->數據[0]是data_t*