相关疑难解决方法(0)

C++或C中foo(void)和foo()之间有区别吗?

考虑这两个函数定义:

void foo() { }

void foo(void) { }
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?如果没有,为什么void那里的论点?美学原因?

c c++ arguments

243
推荐指数
3
解决办法
7万
查看次数

C中的函数式编程(Currying)/类型问题

作为一个染成羊毛的功能性程序员,我发现很难不把我最喜欢的范例卖到我正在使用的任何语言中.在编写一些CI时,我想要讨论我的一个函数,然后传递部分应用的函数.看完之后有没有办法在C里做cur?并注意到http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html#Nested-Functions上的警告我提出:

#include <stdio.h>

typedef int (*function) (int);

function g (int a) {
    int f (int b) {
        return a+b;
    }
    return f;
}

int f1(function f){
    return f(1);}

int main () {
    printf ("(g(2))(1)=%d\n",f1(g(2)));
}
Run Code Online (Sandbox Code Playgroud)

哪个按预期运行.但是,我原来的程序与doubles一起工作,所以我想我只是改变了适当的类型,我会没事的:

#include <stdio.h>

typedef double (*function) (double);

function g (double a) {
    double f (double b) {
        return a+b;
    }
    return f;
}

double f1(function f){
    return f(1);}

int main () {
    printf ("(g(2))(1)=%e\n",f1(g(2)));
}
Run Code Online (Sandbox Code Playgroud)

这会产生如下:

bash-3.2$ ./a.out 
Segmentation …
Run Code Online (Sandbox Code Playgroud)

c gcc types functional-programming function-pointers

13
推荐指数
1
解决办法
1182
查看次数