【发布时间】:2019-11-16 08:43:25
【问题描述】:
我正在完成我的 C 入门课程作业,我的任务是完成以下任务...
- 为一个函数编写代码,该函数通过值接收两个参数(a 和 b)并通过引用具有另外两个参数(c 和 d)。所有参数都是双精度的。
- 从 main 中,使用 scanf 获取两个数字,然后调用该函数,然后在 printf 语句中将两个返回值显示到输出。
- 该函数通过将 (a/b) 分配给 c 并将 (a*b) 分配给 d 来工作。
虽然我的知识很基础,但我相信我了解要点 在主要
//first and second double hold the scanf inputs
double first;
double second;
//unsure here - to reference c and d as parameters in the function, do I simply declare unfilled double variables here?
double *c;
double *d;
printf("Enter your first number\n");
scanf("%f\n", &first);
printf("Enter your second number\n");
scanf("%d\n", &second);
//call the function, first and second by value, &c / &d by reference - correct?
pointerIntro(first, second, &c, &d);
对于函数...
float myFunction(double a, double b, double *c, double *d)
{
c = a/b;
d = a*b;
//printf statements
}
如果这个问题的流程很混乱,我深表歉意,但它对我来说是过程的一部分:P
所以,对于我的正式问题 1.在main中启动两个双指针变量(*c和*d)作为函数中的引用传递是否正确? 2. 我可以通过说 &c / &d 来调用带有引用指针的函数吗? 3. 对这个提问还有其他批评吗?
【问题讨论】:
-
在 C 中,失去“按引用”的白话。使用“按地址”。从长远来看,它会让你的生活更轻松;相信我。仅供参考,
main中的c和d应该是常规的double,而不是double *。此外,在您的函数*c = a/b;和后续行中的类似内容可能是您的意图。你所拥有的至少应该发出一个关于将int分配给int *类型的警告。如果它没有出现您的警告,则将其视为错误。 -
是的,C 简介。这个问题可能措辞不当。
-
"所有参数都是双精度的。" 没有。两个是
double,两个是指向double的指针,即double*. -
如果你想在调用函数中存储 four
double你需要定义 fourdouble. -
@OznOg et al “通过引用传递”的行为是一个独立于语言的通用计算机科学术语。 C 不支持显式 引用类型 的事实不会使术语 “通过引用” 在这种情况下无效 - 在 C++ 成为事物之前它是常用术语。
标签: c function pointers pass-by-reference