C 语言中结构、函数指针的用法359


C 语言中的结构是一种数据类型,它允许您将不同类型的数据组织在一起,就像一个记录。另一方面,函数指针是一种指向函数的指针变量,它允许您在运行时动态调用函数。

结构

声明一个结构如下所示:```c
struct my_struct {
int a;
float b;
char c;
};
```

此结构有一个名为 my_struct 的标签,其中有三个成员:a(整数)、b(浮点数)和 c(字符)。

要访问结构成员,请使用点运算符(.):```c
struct my_struct s;
s.a = 10;
```

函数指针

声明一个函数指针如下所示:```c
int (*func_ptr)(int, int);
```

此函数指针 func_ptr 指向一个接受两个整数参数并返回一个整数的函数。要将函数指针分配给一个函数,请使用地址运算符(&):```c
func_ptr = &add;
```

其中 add 是一个接受两个整数参数并返回其和的函数。要通过函数指针调用函数,请使用星号(*):```c
int result = (*func_ptr)(1, 2);
```

结构和函数指针

结构和函数指针可以结合使用,以创建灵活而强大的数据结构。例如,您可以创建一个包含函数指针的结构,该函数指针指向一个操作结构数据的函数:```c
struct my_struct {
int a;
float b;
char c;
void (*print_func)(struct my_struct *);
};
```

在此示例中,print_func 成员是一个函数指针,该函数指针指向一个函数,该函数接受 my_struct 类型结构的指针并打印其内容。

示例

以下示例创建一个包含函数指针的结构,该函数指针指向一个计算结构中两个数字之和的函数:```c
#include
struct my_struct {
int a;
int b;
int (*sum_func)(struct my_struct *);
};
int sum(struct my_struct *s) {
return s->a + s->b;
}
int main() {
struct my_struct s = {1, 2, &sum};
int result = s.sum_func(&s);
printf("Sum: %d", result);
return 0;
}
```

此示例输出:```
Sum: 3
```

C 语言中的结构和函数指针提供了强大的工具,用于组织数据和创建动态函数调用。通过组合这两种概念,您可以创建灵活而可扩展的程序。

2024-11-12


上一篇:浮点格式输出控制(C 语言 6.2f)

下一篇:如何在 C 语言中输出到多个文件