如何在带有指针的参数的函数内部调用带有指针作为参数的函数

问题描述 投票:0回答:2

我有一个叫做reverse的函数,它的声明像这样'''

void reverse(Number *n)

我该如何在函数内部以第一个或第二个作为参数来反向调用该函数。我试过了:

1)

Number fun1(Number *first,Number *second)
{
        if(first->redosled == 'd') reverse(&first);
        if(second->redosled == 'd') reverse(&second);
}

2)

Number fun1(Number *first,Number *second)
{
        if(first->redosled == 'd') reverse(first);
        if(second->redosled == 'd') reverse(&second);
}
c function-pointers
2个回答
1
投票

第一个和第二个是指针,因此您需要将它们作为不带&的参数发送,如下所示:

Number fun1(Number *first,Number *second)
{
        if(first->redosled == 'd') reverse(first);
        if(second->redosled == 'd') reverse(second);
}

0
投票

我该如何在函数内部以第一个或第二个作为参数来反向调用该函数。我尝试过此

Number fun1(Number *first,Number *second)
{
        if(first->redosled == 'd') reverse(first);
        if(second->redosled == 'd') reverse(second);
}

这里是一个示例示例,供您尝试用例的上述示例。

#include <stdio.h>

//this is number structure(object)
//probably you have defined something similar
typedef struct __number_t{
    char redeslod;
    int number;
}Number;

void reverse(Number *n){ // accept pointer as argument
    //do your reverse logic here
    printf("number is %d\n", n->number);
}

Number *fun(Number *first, Number *second){ //accept pointer as argument, returns a pointer
    Number *ret = NULL;
    if(first->redeslod=='d'){
        //reverse(&first); this will pass a pointer to pointer
        reverse(first);
    }

    if(second->redeslod=='d'){
        reverse(second);
    }

    //do not forget to return your number here
    return ret;
}

int main()
{
    Number first,second;
    first.redeslod = 'd'; 
    first.number = 1;
    second.redeslod = 'c';
    second.number = 2;

    fun(&first, &second);   //here &passes the address

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.