如何将uint8_t *分配到C中的uint16_t

时间:2015-12-09 08:46:01

标签: c pointers casting

如何将uint8_t*分配到uint16_t

我有3个功能:

  • functionC:当它是id_A时,它将数据分成两个

  • functionA:获取id_A的大小

  • functionB:根据functionA

  • 的大小获取id_A的数据

然而:

1)functionA使用uint8_t*来返回大小

2)FunctionB使用uint16_t size作为输入

3)我需要将这些尺寸组合为functionC

中functionB的输入

4)如何将uint8_t*分配到uint16_t?是正确的方法:[B]中的(uint16_t)*outputSize

functionA(uint16_t id, uint8_t* size){
//return size based on id
}

functionB(uint16_t id, uint8_t* data, uint16_t dataSize){
//input:id, input: dataSize and return data 
}

functionC(id){
    uint8_t* outputSize;
    uint8_t* outData;

    fuctionA( id, outputSize);  //[A]outputSize is ouput here

    functionB( id, outData, (uint16_t)*outputSize)); //------[B] outputSize from [A] as input here
}

1 个答案:

答案 0 :(得分:1)

你必须在某处分配内存。摆脱指针并使用普通变量:

uint8_t outputSize; 

然后拨打fuctionA(id, &outputSize);

然后简单地将outputSize传递给下一个函数:

functionB( id, outData, outputSize);

或者如果你想明确:

functionB( id, outData, (uint16_t)outputSize);