我得到了一个返回值为void *
的函数。我需要从该函数返回两个值。
void * studentsCount(int *Arr, int len, int score, int *lessCount, int *moreCount) {
if (Arr == NULL || len <= 0)
return NULL;
for (int i = 0; i < len; i++){
if (Arr[i] < score)
*lessCount++;
else if (Arr[i] > score)
*moreCount++;
}
return lessCount; // <-- I need to return lesscount and morecount..!
}
如何使用void指针返回两个值?
答案 0 :(得分:2)
您不必return
moreCount
和lessCount
,只需在函数内更新其值即可。
根据返回类型void *
,我认为它表示传递的数组是否是“有效”数组,如果是,您可以选择返回非空值(取决于{{{ 1}}函数被调用)。
来电者还应确保studentsCount
和moreCount
指向有效的内存位置,初始化为正确的值
答案 1 :(得分:0)
不,你需要通过参数传递至少一个。
答案 2 :(得分:0)
调用函数
时,必须通过引用传递变量studentsCount(<var Arr>,<var len>,<var score>,&<var lessCount>,&<var moreCount>);
此外,您不能在引用使用的变量中使用递增或递减运算符,因为它们是指针。附上一个示例函数代码,通过引用调用变量,我希望,这可以帮助您
void ejemplo(int *valor1, int *valor2){
int valor1_val=*valor1;
int valor2_val=*valor2;
printf("\nValues in Function\n");
printf("Before Asignation\n");
printf("Numero1 [%d]\nNumero2 [%d]\n",valor1_val,valor2_val);
valor1_val++;
valor2_val--;
printf("After Asignation\n");
printf("Numero1 [%d]\nNumero2 [%d]\n\n",valor1_val,valor2_val);
*valor1=valor1_val;
*valor2=valor2_val;
printf("Return to Main Code\n\n");
}
int main(int argc, char **argv){
int numero1=100;
int numero2=100;
printf("In Main, before function call\n");
printf("Numero1 [%d]\nNumero2 [%d]\n",numero1,numero2);
ejemplo(&numero1,&numero2);
printf("After function call\n");
printf("Numero1 [%d]\nNumero2 [%d]\n",numero1,numero2);
exit(0);
}