解决了从整数到较小指针警告的转换,而无需合并

时间:2019-03-01 14:27:57

标签: c pointers

我进行此作业时:

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

3 个答案:

答案 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中有地址。