gpt4 book ai didi

c - 如何创建和调用指向函数的指针

转载 作者:行者123 更新时间:2023-12-02 07:44:26 25 4
gpt4 key购买 nike

大家好,我是初学者,我正在尝试找出一些指向函数示例的指针。我什至无法编译我的代码,它显示以下消息。我无法确定为什么会出现编译错误。

/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

这是我的代码,请告诉我我做错了什么

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

最佳答案

  1. 您没有使用指针分配内存。
  2. 因为 func_ptrstudent_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);
}

关于c - 如何创建和调用指向函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8040164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com