C语言函数指针初始化
时间: 2024-12-16 09:13:04 浏览: 8
C语言中的函数指针初始化通常是通过定义函数指针变量并直接赋给它所指向的函数的地址来完成的。这里有两个相关的部分:
1. 初始化一个结构体类型的指针[^1]:
```c
// 定义一个结构体student
typedef struct {
char *name;
struct student *next;
} Student;
// 分配内存给结构体
Student *stu1 = malloc(sizeof(Student));
// 初始化结构体指针的成员
stu1->name = (char *)malloc(sizeof(char));
stu1->next = stu1; // 指向自身表示链表循环
// 初始化下一个元素(如果有),这里是链表操作
Student *stu2 = malloc(sizeof(Student));
...
```
2. 初始化结构体成员中的函数指针:
```c
// 假设有一个打印名字的函数
void printName(Student *s) {
printf("%s", s->name);
}
// 定义一个函数指针,指向上述打印名字的函数
void (*funcPtr)(Student *) = printName;
// 赋值时可以直接传入函数名,不需要地址
funcPtr(&stu1); // 调用打印名字的函数
```
注意,函数指针初始化时通常不涉及`malloc()`,因为它们并不存储数据,而是存储函数地址。
阅读全文