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增量(作为参数传递时),
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(作为参数传递时):
我也会尝试修复您的功能:
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)
仍然有很多递归,但是没有不停下来的危险。