c将指针传递给递归函数

Luc*_*che 3 c recursion pointers memory-leaks

所以我在这个程序上苦苦挣扎,我试图找出如何在递归函数中使用声明到main中的指针数组来存储数据,这里出现的问题是,如果它与单个方法相同指针,结构类型呢?通过引用将变量/数组传递给递归函数的最佳方法是什么?

#include <stdio.h>
#include <stdlib.h>
#define N 1

void f(int i,int j,int *cnt);

int j=0;

int main(int argc, char *argv[])
{
  int *cnt=0;
  f(0,++j,&cnt);
  printf("------ %d ---- \n",cnt);
  system("PAUSE");  
  return 0;
}

void f(int i,int j,int *cnt){

   if(i>N){
          printf("---if --- %d ---- %d \n",i,j);
          (*cnt)++;
          return;
          }

   (*cnt)++;
   printf("---bg --- %d ---- %d \n",i,j);
   f(i+1,++j,cnt);
   f(i+1,++j,cnt);        
}
Run Code Online (Sandbox Code Playgroud)

我想知道的另一件事是递归函数如何处理++ i和i ++和i + 1增量(作为参数传递时),

Joh*_*ohn 5

int main(int argc, char *argv[])
{
    int *cnt=0;
    f(0,++j,&cnt);
    printf("------ %d ---- \n",(*cnt));
    system("PAUSE");  
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

需要是

int main(int argc, char *argv[])
{
    int intStorage = 0;//<---- As Oli said.
    int *cnt= &intStorage;
    f(0,++j,cnt);//<-------AMPERSAND removed, overly dereferenced.
    printf("------ %d ---- \n",(*cnt));
    system("PAUSE");  
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

++ i和i ++和i + 1(作为参数传递时):

  1. ++ i:传递了i +1,这也是我后来采用的值。
  2. i ++:我通过了,通话后我= i + 1。
  3. i + 1:i + 1已通过,但之后我保持原样。

我也会尝试修复您的功能:

void f(int i,int j,int *cnt){

    if(i>N){
        printf("---if --- %d ---- %d \n",i,j);
        return;
    }

    (*cnt)++;
    printf("---bg --- %d ---- %d \n",i,j);
    if ( i < 50 && j < 50 ) {
        f(i+1,++j,cnt);
        f(i+1,++j,cnt);
    }
}
Run Code Online (Sandbox Code Playgroud)

仍然有很多递归,但是没有不停下来的危险。