C language > Beginner questions
How to make structure with function pointers?
(1/1)
bitcoin:
Hello.
I read this article , there is a code
--- Code: ---#include <stdio.h>
// A normal function with an int parameter
// and void return type
void fun(int a)
{
printf("Value of a is %d\n", a);
}
int main()
{
// fun_ptr is a pointer to function fun()
void (*fun_ptr)(int) = &fun;
/* The above line is equivalent of following two
void (*fun_ptr)(int);
fun_ptr = &fun;
*/
// Invoking fun() using fun_ptr
(*fun_ptr)(10);
return 0;
}
--- End code ---
How I can change it, to make structure with function pointers? I want to make a sample OOP , such as String->strlen, String->strcat
This code dont work. How to make structure, that contains function pointers and can call functions?
--- Code: ---typedef struct _api
{
void * f1;
void * f2;
} apis;
apis api;
int main()
{
(*api.f1) = &fun;
(*api.f1)(22); //Don't work!!!
--- End code ---
frankie:
A function pointer isn't a void pointer!
You can't declare it so, you must declare as function pointer:
--- Code: ---#include <stdio.h>
#include <string.h>
typedef struct _api {
int (*s_len) (char *);
void (*s_print) (char *);
} apis;
apis api;
int my_str_len(char *s)
{
return strlen(s);
}
void my_print_string(char *s)
{
puts(s);
}
int main(void)
{
api.s_len = my_str_len;
api.s_print = my_print_string;
char string[] = "Hello World!";
api.s_print(string); //prints "Hello World!"
printf("The string \"%s\" is %d characters in length.\n", string, api.s_len(string));
}
--- End code ---
bitcoin:
Thank you , it works!
i forgot to post link to article in first post) There is https://www.geeksforgeeks.org/function-pointer-in-c/
Navigation
[0] Message Index
Go to full version