int main(int argc, char **argv) {
double principal = strtod(argv[1], NULL);
double rate = strtod(argv[2], NULL);
invest(&principal, rate);
printf("%.2f\n", principal);
return 0;
}
这是一些练习中给出的起始代码。我们将编写一个将本金乘以利率的函数。我不明白为什么函数invest
中的第一个参数是变量的地址而第二个参数是变量。它们都作为变量启动。为什么我们不在两个参数中都放变量?
答案 0 :(得分:2)
每当将参数传递给函数时,函数都会接收到它的副本。该功能对该副本没有任何影响。为了使信息从函数传递给调用者,必须发生以下两种情况之一。函数要么需要返回值,要么函数必须将其放置在调用者可以找到它的地方。指针用于标识可以从中写入信息或从中读取信息的对象。我希望invest()
函数旨在读取传入的指针标识的值(即,在这种情况下,读取principal
,然后执行一些计算,然后将结果存储回相同的值对象(同样是principal
)。
答案 1 :(得分:2)
“将变量作为参数输入”时,将传递变量的值。 C的所有参数传递都是按值进行的。
invest
需要进行修改 principal
来保存另一个值,这可以从调用该函数后打印出它的值来证明。如果只给出了principal
中存储的原始值的副本,怎么办?
这就是为什么它接受的第一个参数是指针。 main
传递了principal
的地址,因此invest
可以修改变量本身。