使用不打印值的int函数从数组中返回最大数
Returning largest number from an array using an int function not printing value
我正在尝试创建一个小程序来接收数组和 returns 数组中的最大数字。我能够使用带有初始值设定项“void”的函数创建程序,但不明白为什么我不能使用“int”对不同的函数执行相同的操作。
我在使用函数 int largestNum(int *length,int numberArr[])
时收到错误“不兼容的指针类型从结果类型为 'int *' 的函数返回 'int *(int *, int *)'”。任何解释表示赞赏。
输入:
元素 0 - 23
元素 1 - 12
元素 2 - 34
输出:34
使用 void 的函数:
void largestNum(int *length,int numberArr[]){
int largestNumber = numberArr[0];
for(int x = 1;x < *length;x++){
if (numberArr[x] > largestNumber)
largestNumber = numberArr[x];
}
printf("%d", largestNumber);
}
int main(){
int numbersArr[100];
int input;
int num;
int count = 0;
printf("Input total number of elements (1-100): ");
scanf("%d", &num);
for(int x = 0; x < num; x++){
printf("Element %d - ", count);
scanf("%d", numbersArr + x);
count++;
}
largestNum(&count, numbersArr);
return 0;
}
使用整数的函数:
int largestNum(int *length,int numberArr[]){
int largestNumber = numberArr[0];
for(int x = 1;x < *length;x++){
if (numberArr[x] > largestNumber)
largestNumber = numberArr[x];
}
return largestNumber;
}
int main(){
int numbersArr[100];
int input;
int num;
int count = 0;
printf("Input total number of elements (1-100): ");
scanf("%d", &num);
for(int x = 0; x < num; x++){
printf("Element %d - ", count);
scanf("%d", numbersArr + x);
count++;
}
largestNum(&count, numbersArr);
printf(largestNum);
return 0;
}
您需要将值保存在变量中,例如:
a = largestNum(&count, numberArr);
printf("%d", a);
或者你可以调用printf中的函数
printf("%d", largestNum(&count, numberArr))
largestNum
是一个声明为
的函数
int largestNum(int *length,int numberArr[]);
所以在这次通话中
printf(largestNum);
函数指示符被隐式转换为类型 int( int *, int * )
的指针,但函数 printf 需要类型 char *
的第一个参数。那就是上面调用 printf
没有意义。您需要输出函数的返回值。例如
printf("%d\n", largestNum(&count, numbersArr) );
注意一般功能不正确。当表达式 *length
的值等于 0
.
时,它可以调用未定义的行为
同样,通过引用传递第一个参数也没有什么意义。
由于数组在函数中没有被改变,所以它应该用限定符 const 声明。
函数可以通过以下方式声明和定义
size_t largestNum( const int numberArr[], size_t n )
{
size_t largestNumber = 0;
for ( size_t i = 1; i < n; i++ )
{
if ( numberArr[largestNumber] < numberArr[i] )
{
largestNumber = i;
}
}
return largestNumber;
}
而且函数可以这样调用
size_t pos = largestNum( numbersArr, count );
printf("%d\n", numbersArr[pos] );
要在第二个参数指定为 0 时检查错误,您可以编写
size_t pos = largestNum( numbersArr, count );
if ( pos != count ) printf("%d\n", numbersArr[pos] );
我正在尝试创建一个小程序来接收数组和 returns 数组中的最大数字。我能够使用带有初始值设定项“void”的函数创建程序,但不明白为什么我不能使用“int”对不同的函数执行相同的操作。
我在使用函数 int largestNum(int *length,int numberArr[])
时收到错误“不兼容的指针类型从结果类型为 'int *' 的函数返回 'int *(int *, int *)'”。任何解释表示赞赏。
输入:
元素 0 - 23
元素 1 - 12
元素 2 - 34
输出:34
使用 void 的函数:
void largestNum(int *length,int numberArr[]){
int largestNumber = numberArr[0];
for(int x = 1;x < *length;x++){
if (numberArr[x] > largestNumber)
largestNumber = numberArr[x];
}
printf("%d", largestNumber);
}
int main(){
int numbersArr[100];
int input;
int num;
int count = 0;
printf("Input total number of elements (1-100): ");
scanf("%d", &num);
for(int x = 0; x < num; x++){
printf("Element %d - ", count);
scanf("%d", numbersArr + x);
count++;
}
largestNum(&count, numbersArr);
return 0;
}
使用整数的函数:
int largestNum(int *length,int numberArr[]){
int largestNumber = numberArr[0];
for(int x = 1;x < *length;x++){
if (numberArr[x] > largestNumber)
largestNumber = numberArr[x];
}
return largestNumber;
}
int main(){
int numbersArr[100];
int input;
int num;
int count = 0;
printf("Input total number of elements (1-100): ");
scanf("%d", &num);
for(int x = 0; x < num; x++){
printf("Element %d - ", count);
scanf("%d", numbersArr + x);
count++;
}
largestNum(&count, numbersArr);
printf(largestNum);
return 0;
}
您需要将值保存在变量中,例如:
a = largestNum(&count, numberArr);
printf("%d", a);
或者你可以调用printf中的函数
printf("%d", largestNum(&count, numberArr))
largestNum
是一个声明为
int largestNum(int *length,int numberArr[]);
所以在这次通话中
printf(largestNum);
函数指示符被隐式转换为类型 int( int *, int * )
的指针,但函数 printf 需要类型 char *
的第一个参数。那就是上面调用 printf
没有意义。您需要输出函数的返回值。例如
printf("%d\n", largestNum(&count, numbersArr) );
注意一般功能不正确。当表达式 *length
的值等于 0
.
同样,通过引用传递第一个参数也没有什么意义。 由于数组在函数中没有被改变,所以它应该用限定符 const 声明。
函数可以通过以下方式声明和定义
size_t largestNum( const int numberArr[], size_t n )
{
size_t largestNumber = 0;
for ( size_t i = 1; i < n; i++ )
{
if ( numberArr[largestNumber] < numberArr[i] )
{
largestNumber = i;
}
}
return largestNumber;
}
而且函数可以这样调用
size_t pos = largestNum( numbersArr, count );
printf("%d\n", numbersArr[pos] );
要在第二个参数指定为 0 时检查错误,您可以编写
size_t pos = largestNum( numbersArr, count );
if ( pos != count ) printf("%d\n", numbersArr[pos] );