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]
返回数组中第一个单元格的值,而不是它在内存中的地址。因此,它不是数据类型*
。