void func1(){
// some processing
rle();
// some processing
rle();
}
int rle( , ){
float fioutPutt[100];
int fioutSize[100];
// some processing and then save the result in fioutPutt[] and fioutSize[]
}
#include <stddef.h>
// define a putt/size pair:
typedef struct PuttSize PuttSize;
struct PuttSize {
float putt;
int size;
};
// take a PuttSize* and the number of elements in the array:
void rle(PuttSize psd[], size_t size) {
// some processing and then save the result in psd
for(size_t i = 0; i < size; ++i) {
psd[i].putt = ...;
psd[i].size = ...;
}
}
void func1(void) {
PuttSize psd[100]; // define the array
// some processing
rle(psd, sizeof psd / sizeof *psd); // .. and pass it in along with the size
// some processing
rle(psd, sizeof psd / sizeof *psd);
}
void func1(){
// some processing
float fioutPutt[100];
int fioutSize[100];
rle(fioutPutt, fioutSize);
// some processing
rle(fioutPutt, fioutSize);
}
int rle(float fioutPutt[] , int fioutSize[]){
//Operations that use fioutPutt[] and fioutSize[]
// some processing and then save the result in fioutPutt[] and fioutSize[]
}
3条答案
按热度按时间rta7y2nd1#
如果你真的想返回这些值,你需要将它们打包到一个
struct
中。只能返回单个对象或指向动态分配数组的指针。在您的情况下,我建议传递一个指向
putt
/size
对数组中第一个元素的指针沿着数组的大小。然后,rle
函数可以填充数组,当rle
返回时,这些值将可用于func1
。示例:
bjg7j2ky2#
有多种方法可以从函数中调用的数组中获取数据。一个简单的方法是将它们作为参数传递给函数本身:
31moq8wy3#
您可以通过以下方式修改
func1
签名:所以你可以在
rle
函数中写:注意,您将在
func1
中接收的数组只是在rle
中处理的数组的副本。正如你所看到的,你所要求的是可能的,但你可以更好地理解,也许你正在努力做一件无用的事情。我建议你尝试改变你的算法的行为。