Reputation: 9
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
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
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