C语言中指针对指针的赋值
我有一个存储我所需数据的数据结构。 我需要得到数据结构字段内存上的指针C语言中指针对指针的赋值,c,pointers,C,Pointers,我有一个存储我所需数据的数据结构。 我需要得到数据结构字段内存上的指针 OAL_ErrorCode read_lwm2m_resource_str(lwm2m_context_t * lwm2mH, lwm2m_uri_t uri, char* dataToReturn) { lwm2m_data_t dataArray = {.id = uri
OAL_ErrorCode read_lwm2m_resource_str(lwm2m_context_t * lwm2mH,
lwm2m_uri_t uri,
char* dataToReturn)
{
lwm2m_data_t dataArray = {.id = uri.resourceId};
lwm2m_data_t* dataArrayPtr = &dataArray;
OAL_ErrorCode res;
res = _get_lwm2m_data_array(lwm2mH, uri, dataArrayPtr);
if (res != NO_ERROR)
{
return res;
}
dataToReturn = (char*)dataArrayPtr->value.asBuffer.buffer;
return NO_ERROR;
}
当我在调试模式下运行程序并将断点放在read_lwm2m_resource_str()中的return NO_ERROR上时,dataToReturn指向正确的内容,但在read_lwm2m_resource_str()完成后,strBuf中有垃圾并指向不同的内存位置。 什么是错误的以及如何使其工作
p.slwm2m数据
struct _lwm2m_data_t
{
lwm2m_data_type_t type;
uint16_t id;
union
{
bool asBoolean;
int64_t asInteger;
uint64_t asUnsigned;
double asFloat;
struct
{
size_t length;
uint8_t * buffer;
} asBuffer;
struct
{
size_t count;
lwm2m_data_t * array;
} asChildren;
struct
{
uint16_t objectId;
uint16_t objectInstanceId;
} asObjLink;
} value;
};
您需要将指针传递给指针:
char**dataToReturn
以修改原始指针。void f(int i){i=5;}int main(){int x=7;f(x);printf(“%d\n”,x);}
struct _lwm2m_data_t
{
lwm2m_data_type_t type;
uint16_t id;
union
{
bool asBoolean;
int64_t asInteger;
uint64_t asUnsigned;
double asFloat;
struct
{
size_t length;
uint8_t * buffer;
} asBuffer;
struct
{
size_t count;
lwm2m_data_t * array;
} asChildren;
struct
{
uint16_t objectId;
uint16_t objectInstanceId;
} asObjLink;
} value;
};