【问题标题】:How to return *uint8_t (array) from function of external c file to main.c如何将 *uint8_t (array) 从外部 c 文件的函数返回到 main.c
【发布时间】:2019-08-08 15:18:05
【问题描述】:

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

ma​​in.c

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

function.h

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

function.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。

【问题讨论】:

  • 有两种可能的解决方案。选择哪一个取决于您是否可以更改参数hex 的类型?
  • @superstack 显示 hex 在 main 中是如何定义的。

标签: c arrays function pointers return-type


【解决方案1】:

如果变量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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多