我有这样的代码:
typedef struct _Statistics {
Some code here
} Statistics;
void function1(char *string, Statistics *statistic){
Some code here
function1(string1, statistic);
}
int main(){
Statistics statistic;
function1(string, &statistic);
}
这可能是个愚蠢的问题,但我不完全理解指针:
我理解为什么在主函数中使用&变量统计的发送地址,以便在函数1中修改它。但是为什么不在递归函数1中使用&?
最佳答案
有时这样写会有帮助:
void function1(char* string, Statistics* statistic){
变量
statistic
是指向统计数据的指针,而不是统计数据本身。如果在函数1中执行此操作: function1(string1, &statistic);
您将传递一个指向(因为&)一个指向(因为声明中的*)统计信息的指针,这是不正确的。
您在main中声明
statistic
作为Statistic增加了混淆:您在两个作用域中使用相同的变量名和不同的类型。使用不同的变量名会更清楚:
typedef struct _Statistics {
Some code here
} Statistics;
void function1(char* string, Statistics* ptrstat){
Some code here
function1(string1, ptrstat);
}
int main(){
Statistics statistic;
function1(string, &statistic);
}
关于c - 指针,结构,传递参数,递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29559267/