aji*_*red 2 c function-pointers function
嗨,我是初学者,我正在尝试找出一些指向函数示例的指针.我甚至无法编译我的代码,它显示以下消息.我无法确定为什么我收到编译错误.
/tmp/cc0qghbo.o: In function `main':
pointer_to_function_inside_structure.c:(.text+0x88): undefined reference to `func_ptr'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
这是我的代码,请告诉我我做错了什么
#include<stdio.h>
#include<stdlib.h>
struct student_data
{
char *name;
int roll_num;
int marks;
void (* func_ptr)(struct student_data *ptr);
};
void print_data(struct student_data *ptr);
void print_data(struct student_data *ptr)
{
printf("\nNAME OF THE STUDENT %s", ptr -> name);
printf("\nROLL NUMBER OF STUDENT %d", ptr -> roll_num);
printf("\nMARKS OF STUDENT %d\n", ptr -> marks);
}
int main()
{
struct student_data *ptr;
ptr -> name = "ajish";
ptr -> roll_num = 2;
ptr -> marks = 50;
ptr -> func_ptr = &print_data;
func_ptr(ptr);
}
Run Code Online (Sandbox Code Playgroud)
func_ptr
是student_data
你的成员你必须调用你的函数使用struct student_data *ptr
它应该是指向你的结构的实例的指针.例:
int main()
{
// allocate memory
struct student_data *ptr = malloc(sizeof(student_data));
ptr -> name = "ajish";
ptr -> roll_num = 2;
ptr -> marks = 50;
ptr -> func_ptr = &print_data;
// change this to:
ptr->func_ptr(ptr);
// free memory
free(ptr);
}
Run Code Online (Sandbox Code Playgroud)