【发布时间】:2017-06-24 12:18:15
【问题描述】:
所以,到目前为止我有这个。我试图在一个数组中找到两个最大的数字并返回它们。我在网上查了很多资源,大多数都说“引用调用”是要走的路。但我不知道如何使它与我的程序一起工作。比如我在网上看到这个例子:
void Calculate(int x, int y, int* prod, int* quot)
{
*prod = x*y;
*quot = x/y;
}
int x = 10,y = 2, prod, quot;
Calculate(x, y, &prod, ")
上述程序实际上是如何“返回”的?如何将返回值打印到控制台?
#include "stdio.h"
void largest_two( int numbers[], int len, int *largest, int *next_largest){
int i, temp;
*largest = numbers[0];
*next_largest = numbers[1];
if(*largest < *next_largest){
temp = *next_largest;
*largest = *next_largest;
*next_largest = temp;
}
for (i=0; i<sizeof(numbers); i++) {
if(numbers[i]>= *largest){
*largest = numbers[i];
*next_largest = *largest;
}
else if ( numbers[i] > *next_largest){
*next_largest = numbers[i];
}
}
}
int main() {
int numbers[] = {3, 1, 2, 3, 6, 2, 8, 0, 0, 0};
int len = 3;
int largest, next_largest;
//==>??? printf("%d %d", largest_two(numbers, len, &largest, &next_largest));
}
【问题讨论】:
-
for (i=0; i<sizeof(numbers); i++)-->for (i=0; i<len; i++) -
调用
largest_two,就像你到目前为止所做的那样,然后printf("%d %d", largest, next_largest)。 -
printf("largest=%d\nnext_largest=%d\n", largest, next_largest);顺便说一句,你应该购买/阅读一本好的 c 书籍并学习一些关于指针的东西......
标签: c arrays pointers return function-pointers