我是一名初级程序员,我正在学习我的第一语言 C。
我主要从 Deitel 和 Deitel 的 C How to Program 一书中学习,但也使用来自大学的示例任务和事物,但是我被困在一个。
我对指针有一个非常非常基本的理解 - 在变量前面添加 & 使它打印一个地址,并且 * 使用指针来使用存储在该地址等处的值。
我编写的代码用于计算两个数字的最大(最大?)公分母,实际上根本不需要或涉及指针。它使用两个函数并且逻辑都是正确的,因为如果我从第二个函数执行它,它会在屏幕上打印出正确的答案,而不是将其返回到主函数。这就是问题所在。
当第二个函数返回答案值时,由于某种原因它返回我只能假设是一个指针。我不知道它为什么这样做。我将能够使用它并将其转换为查找值 - 但是它似乎是第二个函数的本地指针并被覆盖。我在网络上或在我的书中找不到任何东西可以让我知道如何解决这个问题。
谢谢你读到这里。我跑题太多了。
这是我的代码和输出。任何帮助或指示(请原谅双关语)将不胜感激。我知道我可以让它在第二个函数中打印,但我更想知道它如何以及为什么它没有像我想要的那样返回值。
代码
#include <stdio.h>
int greatestCD (int num1, int num2);
int main(void)
{
int a=0, b=0;
int result;
printf("Please enter two numbers to calculate the greatest common denominator from\n");
scanf("%d%d", &a, &b);
result = greatestCD (a,b);
printf("Using the correct in main way:\nThe greatest common denominator of %d and %d is %d\n",a,b, result);
}
int greatestCD (int num1 ,int num2)
{
if (num2==0){
printf("Using the cheaty in gcd function way:\nThe greatest common denominator is %d\n",num1);
return num1;
} else {
greatestCD(num2,(num1%num2));
}
}
输出(使用 12 和 15 - 答案应该是 3)
C:\Users\Sam\Documents\C programs>gcd
Please enter two numbers to calculate the greatest common denominator from
12
15
Using the cheaty in gcd function way:
The greatest common denominator is 3
Using the correct in main way:
The greatest common denominator of 12 and 15 is 2293524
来自 frankodwyer 的这样一个简单的解决方案。这是我无法发现或不知道的微小事物。那么返回的不是指针而是垃圾?
太感谢了。