Dusan Sijacic
Dusan Sijacic

Reputation: 9

How to call a function with pointer as argument inside a function with argument with pointer

I have a function called reverse which is declared like this '''

void reverse(Number *n)

How do i call the function reverse inside this function with first or second as argument. I tried this:

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);
}

Upvotes: 0

Views: 52

Answers (2)

choppe
choppe

Reputation: 506

How do i call the function reverse inside this function with first or second as argument. I tried this

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

Here is a sample example for you to try the above for your use-case. Additionally, please note the function fun returns a Number pointer variable

#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;
}

Upvotes: 0

RafaelJan
RafaelJan

Reputation: 3616

first and second are pointers so you need to send them as arguments without &, like this:

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

Upvotes: 1

Related Questions