c - 如何在 C 中将 uint8_t* 分配给 uint16_t

标签 c pointers casting

如何将uint8_t*赋值给uint16_t

我有3个功能:

  • functionC:当id_A时,将数据分成两部分

  • 函数A:获取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
}

最佳答案

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

uint8_t outputSize; 

然后调用fuctionA(id, &outputSize);

然后只需将 outputSize 传递给下一个函数:

functionB( id, outData, outputSize);

或者如果您想明确表示:

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

关于c - 如何在 C 中将 uint8_t* 分配给 uint16_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34174295/

相关文章:

c - C中struct的双指针是什么意思

swift 无法将类型 'Int' 的值分配给类型 'String'

java - 为什么 javac 允许一些不可能的强制转换而不是其他强制转换?

c++ - 如何在 C++ 中标记要转换到哪个类?

c - 将大写字母更改为小写字母时答案错误,反之亦然

c - 无法从 C 中的其他模块访问 linux 中共享库的自定义全局函数

c++ - 将结构指针复制到指针

c - 将二维数组传递给函数时,单指针和双指针有什么区别?

将二维数组复制到另一个二维数组

c - 为什么验证密码的代码总是拒绝输入?