c - 如何将 *uint8_t (array) 从外部 c 文件的函数返回到 main.c
问题描述
uint8_t *hex
我想找到一种从函数返回指针的无错误方法。我有 3 个文件main.c,function.c,header.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。
解决方案
如果变量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);
推荐阅读
- java - 在 SWT 中为 Text 设置 ModifyListener 的时间间隔
- excel - MS Excel:带有条件的最新日期值公式(日期/类别/余额)
- javascript - 带有拒绝承诺的异步函数的奇怪行为
- postgresql - 如何比较一个表中多行中的所有字段的结果为真或假(PostgreSQL)
- android - 为什么深度链接查询中的百分比发生了变化
- python - 如何通过单独的管道运行多个蜘蛛?
- android-management-api - 应用程序随机最小化
- c# - 关闭 C#/C++ DLLImport 或至少释放其堆内存?
- circleci - 有没有办法运行不在 master 中的 ci
- javascript - 为什么 0.5 秒后不会从红色变为白色?