Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将整数转换为uint8\t指针?_C_Pointers_Formatting - Fatal编程技术网

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);