Return 函数中的值 void *
Return value void * in a function
我得到了一个 return 值为 void *
的函数。我需要 return 来自该函数的两个值。
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 指针 return 两个值?
不可以,你至少需要通过参数传递其中之一。
您不必 return
moreCount
和 lessCount
,您只需在函数内更新它们的值。
根据 return 类型 void *
而言,我假设它表示传递的数组是否为 "valid" 数组,如果是,您可以选择 return 非空值(取决于 studentsCount
函数的调用方式)。
调用者还应确保 moreCount
和 lessCount
指向有效的内存位置,并初始化为 正确的 值
调用函数时必须按引用传递变量
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);
}
我得到了一个 return 值为 void *
的函数。我需要 return 来自该函数的两个值。
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 指针 return 两个值?
不可以,你至少需要通过参数传递其中之一。
您不必 return
moreCount
和 lessCount
,您只需在函数内更新它们的值。
根据 return 类型 void *
而言,我假设它表示传递的数组是否为 "valid" 数组,如果是,您可以选择 return 非空值(取决于 studentsCount
函数的调用方式)。
调用者还应确保 moreCount
和 lessCount
指向有效的内存位置,并初始化为 正确的 值
调用函数时必须按引用传递变量
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);
}