我正在从 Python 过渡到 C,所以我的问题可能看起来很幼稚。我正在阅读有关 Python-C 绑定的教程,并提到:
在 C 中,所有参数都是按值传递的。如果要允许函数更改调用方中的变量,则需要传递指向该变量的指针。
问题:为什么我们不能简单地重新分配函数内部的值并且摆脱指针?
以下代码使用指针:
#include <stdio.h>
int i = 24;
int increment(int *j){
(*j)++;
return *j;
}
void main() {
increment(&i);
printf("i = %d", i);
}
Run Code Online (Sandbox Code Playgroud)
现在这可以用以下不使用指针的代码替换:
int i = 24;
int increment(int j){
j++;
return j;
}
void main() {
i=increment(i);
printf("i = %d", i);
}
Run Code Online (Sandbox Code Playgroud)
您只能从函数中返回一件事。如果需要更新多个参数,或者需要将返回值用于更新变量以外的其他内容(例如错误代码),则需要传递指向该变量的指针。