Home > Back-end >  Can I pass parameters into a function if I only have a pointer to a function in C?
Can I pass parameters into a function if I only have a pointer to a function in C?

Time:01-29

I have a program, what it does isn't too important, I am mostly curious of the following: If I have a struct that has pointers to a function, can I pass parameters into the function using that pointer? Here is part of my code

edit: I realized I was a little vague: So is there anyway to use the variable 'x' of type funcs, to pass parameters into the my_closeit and my_openit using the pointer's initialized by x = {&openit, &closeit}; in the main function? By doing x -> or x. ?

Another Edit: Would it be x.openit(some pointer, some int); ?

#include<stdio.h>
int my_openit(char* name, int prot);
void my_closeit(void);

typedef struct funcs 
{
int (*openit)(char *name, int prot);
void (*closeit)(void);
}funcs;
//I know the first 'funcs' is unnecessary

int main()
{
funcs x = {&my_openit, &my_closeit};
return 0;
}

int my_openit(char* name, int prot)
{
return 0;
}

void my_closeit(void)
{
}

CodePudding user response:

Yes, just use function call expression through the pointers:

int r = x.openit("myfile",0);
x.closeit();

CodePudding user response:

can I pass parameters into the function using that pointer?

Yes, obviously, or it wouldn't be of any use. In your case:

int result = x.openit("something", 123);
  •  Tags:  
  • Related