C 如何将整数转换为uint8\t指针?
我有一个定义如下的函数:C 如何将整数转换为uint8\t指针?,c,pointers,formatting,C,Pointers,Formatting,我有一个定义如下的函数: void foo(uint8_t *val, int num) { for(int i=0;i<num;i++) printf("Buffer[%i]=0x%X \n",i,val[i]); } 因此,为了打印缓冲区,我执行以下操作: int main() { foo(Buffer,4); return 0; } 其结果是: Buffer[0]=0x1
void foo(uint8_t *val, int num)
{
for(int i=0;i<num;i++)
printf("Buffer[%i]=0x%X \n",i,val[i]);
}
因此,为了打印缓冲区,我执行以下操作:
int main()
{
foo(Buffer,4);
return 0;
}
其结果是:
Buffer[0]=0x1
Buffer[1]=0x2
Buffer[2]=0x3
Buffer[3]=0x4
问题是,对于特定的情况,我只需要将一个uint8_t参数发送到替换缓冲区的函数,因此我实现了它,如下所示:
int main()
{
uint8_t READ_VAL[] = {0x01};
foo(READ_VAL,1);
return 0;
}
不管怎样,有什么方法可以在线完成吗?我试着像这样做
foo((uint8_t *)0x01,1);
但它不工作(给我分段错误)。知道我该怎么做吗
foo((uint8_t []) { 0x01 }, 1);
形式“(
类型){
初始值设定项…}
”是复合文字,在C 2018 6.5.2.5中规定。它使用初始值设定项给定的值创建指定类型的对象
(uint8\u t[]){0x01}
创建一个值为0x01的uint8\u t
数组。作为数组,它会自动转换为指向其第一个元素的指针,该指针适用于foo
的第一个参数
函数中的复合文字是临时的,其自动存储持续时间与其封闭块相关联。函数外的复合文字在程序执行过程中持续时间较长,具有静态存储持续时间。您似乎寻求的是调用。如果您只有1个值,为什么不直接用printf替换函数调用?我只是将我的情况简化为这个简单的printf情况,以重现我的问题,但实际上这不是一个选项@事实上,这正是我所需要的。谢谢@某个程序员
foo((uint8_t []) { 0x01 }, 1);