#include<stdio.h>
#include<string.h>
int *num(char p,char ch)
{int i=0,d;
static int c;
if((p+i)!='\0')
{if((p+i)==ch)++c;
i++, num((p+i),ch);
}
d=&c;
return d;
}
main()
{char s[]="fkhkkhdfhfjk",ch;
int *d,i,k=0;
ch=getchar();
d=num(s,ch);
printf("%d",*d);
for(i=0;i<strlen(s);i++)
if(s[i]==ch)k++;
printf("\n%d",k);
}
static int c=0只是表明静态变量初始化为0,后续函数调用时,c变量不再进行初始化,因此始终保留之前存储的结果,不会重复初始化的
static int c=0意味着,变量c只初始化一次,初始化时间为第一次调用该变量所在函数时,当所在函数执行结束时,static int c所拥有的内存不会被回收,即c存储的值也不会发生改变。下次调用该函数时,由于c的内存并没有释放回收,所以也不会进行分配空间,初始化变量等操作
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!