我真的不明白为什么我知道tmp
和key
的类型和大小相同时会出现这样的错误。
uint8_t key[8] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
void change() {
int i;
uint8_t *tmp[8];
for(i=0; i<8; i++){
tmp[i] = key[(i+3)%8];
}
}
这会产生:
警告:赋值在没有强制转换的情况下从指针生成整数[-Wint-conversion
答案 0 :(得分:2)
tmp
和key
属于同一类型
否即可。他们不是。它们都是数组,但数据类型不同。一个是uint8_t *
数组,另一个是uint8_t
数组。
更改
uint8_t *tmp[8];
到
uint8_t tmp[8] = {0};
答案 1 :(得分:1)
不清楚您想要的内容,但是如果您希望tmp[x]
反映key[y]
中的值,那么
tmp[i] = &key[(i+3)%8]; /* tmp[i] now points at key[ (i+3)%8];
// key[3] = 5; /* These two lines modify the same memory */
// (*tmp[0]) = 5; /* */
否则,如果你想让tmp分开,那么......
uint8_t tmp[8]; /* change type to be non-pointer. */