我正在尝试编写一个返回数据数组起始地址的函数。
// 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的新手并且不理解错误消息。谢谢。
答案 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*