我进行此作业时:
const uint8_t *p = (uint8_t *)(uint64_t address);
我得到
conversion from integer to smaller pointer warning
所以我想从uint64_t整数中保存uint8_t指针。我无法修改这两种类型。
LE:所以整个代码看起来像这样
typedef token{
const uint8_t *pTr;
}token;
typedef key{
uint64_t srcAddress;
}key;
在一个将两个结构的指针作为输入的函数中,我想做:
token->pTr = key->srcAddress
答案 0 :(得分:1)
如果程序中有uint64_t变量,则正确的方法是:
uint64_t address = ...;
const uint8_t *p = (uint8_t *)(&address);
记住CPU的字节序也是个好主意。
答案 1 :(得分:0)
是否要获取具有8个8位元素的数组的地址值?如果要这样做,可以这样:
uint64_t address;
uint8_t* p;
p = &address;
然后可以将p用作数组。
答案 2 :(得分:0)
这里是获取内存地址(如变量)并分配给其他指针。
uint8_t *a = (uint8_t*)malloc(sizeof(uint8_t));
uint64_t address = (uint64_t)a;
uint8_t *b = (uint8_t*)address;
*b = 10;
printf("%d\n", *a);
输出10
这样a == b
,并在存储器address
中有地址。