3

我真的不明白为什么我知道这样的错误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

4

2 回答 2

2

tmp并且key是同一类型

没有。他们不是。它们都是数组,但数据类型不同。一个是uint8_t *数组,另一个是uint8_t数组。

改变

 uint8_t *tmp[8];

uint8_t tmp[8] = {0};
于 2016-01-17T15:31:56.397 回答
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. */
于 2016-01-17T16:28:42.350 回答