C 返回数据数组的起始地址

C 返回数据数组的起始地址,c,pointers,vector,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: e

我试图编写一个函数,返回数据数组的起始地址

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

要么
返回v->data
返回&(v->data[0])工作。

要么
返回v->data
返回&(v->data[0])工作。

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

试着这样做:

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

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

试着这样做:

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

上面写着:当使用类型“data\u t”初始化类型“data\u t*”时,类型不兼容

您必须分配数组的地址

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


v->data[0]的类型是
data\u t
,而&v->data[0]的类型是
data\u t*

它就在那里说:当使用类型“data\u t”初始化类型“data\u t*”时,类型不兼容

您必须分配数组的地址

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


v->data[0]的类型是
data\u t
,&v->data[0]的类型是
data\u t*

我相信
v->data[0]
返回数组中第一个单元格的值,而不是它在内存中的地址。因此,它不是
数据类型*
类型。我相信
v->data[0]
返回数组中第一个单元格的值,而不是它在内存中的地址。因此,它不是
数据类型*