c编程unsigned int或uint8_t

时间:2017-02-01 14:47:43

标签: c variables types

我正在编写一个名为take_picture()的函数。该功能将使相机拍照并将数据存储在数组中。

我希望函数返回数组所在的地址并返回数组的大小。

所以这是我的函数声明:

uint8_t * take_picture(int *piclength)

我的问题是函数返回类型和参数的正确/逻辑数据类型是什么?考虑到它们存储数组的地址和大小? uint8_tint是否有意义?

由于

2 个答案:

答案 0 :(得分:1)

  

我的问题是函数返回类型和参数的正确/逻辑数据类型是什么?考虑到它们存储数组的地址和大小?

函数返回类型应该是指向数组项的指针。如果它是uint8_t的数组,则返回类型应为uint8_t*。这也是字节数组最正确/最安全的类型("原始数据")。

用于描述数组大小的最正确的类型是size_t,这是一种专门为此目的而存在的无符号整数类型,并且可以保证足够大以容纳给定系统的数组大小

uint8_t* take_picture (size_t* piclength);

或者

void take_picture (uint8_t* picture, size_t* piclength);

答案 1 :(得分:-1)

unsigned int size; //因为图像大小总是正的并且很大。

uintptr_t地址; //如果这在stdint.h中可用

unsigned int address; //它能够存储指针大小。

address = take_picture(& size); // take_picture if if return uintptr_t

如果你不知道take_picture会返回什么,那么就像你所做的一样投出它:

address =(unsigned * int)take_picture(& size);