我有这样的代码:

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/

10-12 05:17