在C语言中将整数转换为字符指针

在C语言中将整数转换为字符指针,c,embedded,casting,C,Embedded,Casting,我有一个函数uint8_t EE_Writeuint8_t addr、uint8_t len、uint8_t*buf,它接受一个指向它将写入内存的某些数据的指针,还有一个我想要给它的uint16_t myword。基本的 EE_Write(0,sizeof(myword),&myword); 给我不同类型的编译器间接警告“unsigned int*const”而不是“unsigned char*const”,即使我将单词int类型转换为byte char,我也收到了完全相同的警告,并且

我有一个函数uint8_t EE_Writeuint8_t addr、uint8_t len、uint8_t*buf,它接受一个指向它将写入内存的某些数据的指针,还有一个我想要给它的uint16_t myword。基本的

EE_Write(0,sizeof(myword),&myword);
给我不同类型的编译器间接警告“unsigned int*const”而不是“unsigned char*const”,即使我将单词int类型转换为byte char,我也收到了完全相同的警告,并且没有使用括号进行分组

EE_Write(0,sizeof(myword),&(uint8_t)myword);
警告会随联合一起消失,但为了让编译器满意而不得不将其写入另一个变量是愚蠢的

union catbyte {
    uint16_t w;
    uint8_t b[2];
};

union catbyte mybytes;

mybytes.w = myword;
EE_Write(0,sizeof(myword),mybytes.b);
你可以做:

EE_Write(0,sizeof(myword),(uint8_t *)&myword);
但更可取的方法是定义函数以获取空指针,如:

uint8_t EE_Write(uint8_t addr, uint8_t len, const void * buf);
然后,编译器不应该为您传递的任何指针类型发出警告。

Ah,应该查看memcpy等以获得线索。