返回数据数组的起始地址

时间:2014-10-09 15:54:46

标签: c pointers vector

我正在尝试编写一个返回数据数组起始地址的函数。

    // 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的新手并且不理解错误消息。谢谢。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您正尝试将实际数据分配给变量address,而不是分配0th元素的实际地址!

尝试这样的事情:

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

答案 2 :(得分:1)

它在那里说:使用'data_t'类型初始化类型'data_t *'时不兼容的类型。

您必须指定数组的地址。

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

data_t* a = v->data ;

v-> data [0]的类型为data_t,& v-> data [0]为data_t*