首页 > 解决方案 > 如何将 *uint8_t (array) 从外部 c 文件的函数返回到 main.c

问题描述

uint8_t *hex我想找到一种从函数返回指针的无错误方法。我有 3 个文件main.cfunction.cheader.h

主.c

 uint8_t *hex;
 my_ftn(a,b,c,d,&hex);

函数.h

void my_ftn(int a,int b,int c,int d,uint8_t *hex);

函数.c

void my_ftn(int a,int b,int c,int d,uint8_t *hex){
   ...
   ...
   a=64;
   hex=malloc(a);  //let a= 64;
   for(i=0;i<a;i++)
     hex[i]= some values;
}

我想将值返回hex[i] ,(i=0 to a)给 main.c。

注意: my_ftn(function) 的返回类型必须为 void。

标签: carraysfunctionpointersreturn-type

解决方案


如果变量hex在 main 中声明

uint8_t *hex = NULL;

然后通过以下方式声明函数

void my_ftn(int a,int b,int c,int d,uint8_t **hex){
                                    ^^^^^^^^^^^^^
   ...
   ...
   a=64;
   *hex=malloc(a);  //let a= 64;
   for(i=0;i<a;i++)
     ( *hex )[i]= some values;
}

即通过引用传递指针。

并按照您已经写过的方式调用它

my_ftn(a,b,c,d,&hex);

推荐阅读