如何读取指针的值,因为这个指针是函数的返回?

How can I read values of a pointer, being this pointer the return of a function?

本文关键字:指针 返回 函数 因为 何读取 读取      更新时间:2023-10-16

这将是我的代码:

uint8_t* send(uint16_t sw){
uint8_t sw8[2];
uint8_t* data= NULL;
sw8[0]=sw>>8;
sw8[1]=sw&0xFF;
memcpy(data,sw,2);
return data;
}
main(){
uint8_t * resp;
resp = send(x6A00);
}

例如,如果 sw 是0x6A00,*数据将是 6A,我希望它是 6A00!!!

uint8_t* data= NULL;
...
memcpy(data,sw,2);

在这里,您将 null 传递给memcpy。程序的行为是未定义的。

我希望 [*data] 为 6A00!!!

然后data必须指向某个数组。您可以通过初始化指针来实现此目的。具体来说,你应该怎么做取决于你想做什么。

我希望数据指向 sw8。但是如果我输入 data=sw8,我会得到 &sw8[0],我无法访问整个数组,对吧?

当然可以。您可以简单地使用data[1]来访问第二个元素。

但是,如果这样做,则不应返回data因为sw8函数中的自动变量,因此其生存期结束,并在函数结束时自动销毁。因此,返回指向它的指针始终返回无效指针。