English 中文(简体)
我试图使 f重返点成为 f2,但似乎没有工作。 这个问题是什么? 我想要的是产出20。
原标题:I tried to make make foo return a pointer to fun2 but it doesn t seem to be working. What s the issue here? I want y to output 20
int (*foo(int(*f)(int,int)))(int,int)
{
    printf("hello");
    return f+1;
}

int fun1(int x, int y)
{
    return x+y;
}
int fun2(int x,int y)
{
    printf("hey");
    return x*y;
}

int main()
{
    int (*fun_ptr[2])(int,int);
    int x,y;
    fun_ptr[0]=&fun1;
    x=fun_ptr[0](4,5);
    printf("%d
",x);
    fun_ptr[1]=&fun2;
   
    fun_ptr[0]=foo(fun_ptr[0]);
    y=fun_ptr[0](4,5);
    
    printf("%d",y);
    return 0;

}

我试图利用回报 f+1使 f返回点到fun2。 因此,(在我看来)应该指出阵列中的下一个要素,即:fun_ptr? 因此,到现在为止,这应该是20个,但没有任何产出。 页: 1

问题回答

为了与阵列合作,点人必须指出阵列的要素。 在这里,你有一系列职能要点,因此,一个要素的点子是a Pointer to a pointer to a function。 页: 1

因此,如果你改变禁忌的声明,

int (**foo(int(**f)(int,int)))(int,int)

它应当按照你的期望开展工作。 页: 1

Ok I fixed it 

int (*foo(int(**f)(int,int)))(int,int)
{
    
    return *f[1];
}

int fun1(int x, int y)
{
    return x+y;
}
int fun2(int x,int y)
{
    
    return x*y;
}

int main()
{
    int (*fun_ptr[2])(int,int);
    int x,y;
    fun_ptr[0]=&fun1;
    x=fun_ptr[0](4,5);
    printf("%d
",x);
    fun_ptr[1]=&fun2;
    
    fun_ptr[0]=foo(&fun_ptr[0]);
    y=fun_ptr[0](4,5);
    
    printf("%d
",y);
    return 0;

}

My foo function previously took a pointer to a function but doing that I couldn t travel 1 step inside the array fun_ptr. So, took a step back and passed the address of the array of function pointers instead. This worked.





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签