c - 使用递归查找数组中数字的频率

标签 c function parameter-passing

我的代码块出错了。但是我无法在任何地方找到它

程序。它在说

in Line 3 :expected ';',',' or ')' before '=' token

 #include<stdio.h>

 int count_key1(int a[],int size,int key,int flag=0)
 {

     if(size!=0)
         {
             if(a[size-1]==key)
                 count_key1(a,size--,key,flag++);
         }
     else
        return flag;
 }
 int main()
 {
     int b[30]={1,4,2,3,2,6,6,9},key1=9,result;
     result=count_key1(b,8,key1,0);
     printf("%d is %d times present",key1,result);
     return 0;
 }

最佳答案

在 C 中,您不能在函数参数中分配默认值

中移除=0
  int count_key1(int a[],int size,int key,int flag=0)

IIRC,您对 C++ 函数重载感到困惑,在这种情况下,如果在调用函数时未传递参数,我们可以为参数设置一些默认值。

但是,在 C 中,函数调用必须完全匹配定义中存在的签名。因此,基本上,函数定义中不需要默认值

关于c - 使用递归查找数组中数字的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923832/

相关文章:

c - 什么是 C11 cor 1 :2012?

javascript - 嵌套的辅助函数和性能

c - 如何将结构成员数组传递给C中的函数

c - 如何临时将 printf 输出重定向到 C 字符串?

c - 当事先不知道输入大小但需要存储输入时,realloc 是在 C 中获取用户输入的唯一方法吗?

c - 无效的 realloc/realloc 返回 NULL

c++ - 在函数中隐藏迭代

javascript - 调用 JavaScript 函数的正确方法是什么?

javascript - 将参数传递给 javascript 函数

c - 向函数指针添加参数