C语言 函数指针使用实例
时间: 2023-08-10 11:36:25 浏览: 64
好的,下面是一个 C 语言函数指针的使用实例:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
int a = 10, b = 5;
int (*p)(int, int); // 声明一个函数指针变量
p = add; // 将函数 add 的地址赋值给指针变量
printf("a + b = %d\n", p(a, b)); // 调用函数指针
p = sub; // 将函数 sub 的地址赋值给指针变量
printf("a - b = %d\n", p(a, b)); // 调用函数指针
return 0;
}
```
这个例子中,我们定义了两个函数 `add` 和 `sub`,它们都接受两个整型参数并返回一个整型值。然后我们声明了一个函数指针变量 `p`,它可以指向接受两个整型参数并返回一个整型值的函数。我们将函数 `add` 的地址赋值给指针变量 `p`,然后调用指针变量 `p` 对应的函数,输出结果为 `a + b = 15`。接着,我们将函数 `sub` 的地址赋值给指针变量 `p`,再次调用指针变量 `p` 对应的函数,输出结果为 `a - b = 5`。
相关问题
c语言中malloc函数使用实例
malloc函数是C语言中用来动态分配内存的函数,以下是一个使用malloc函数的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int n = 5;
ptr = (int*) malloc(n * sizeof(int)); // 分配5个整数大小的内存空间
if (ptr == NULL) { // 检查是否分配成功
printf("内存分配失败");
exit(1);
}
for (int i = 0; i < n; i++) {
*(ptr + i) = i + 1; // 给每个内存空间赋值
}
printf("分配的内存空间中的值:\n");
for (int i = 0; i < n; i++) {
printf("%d ", *(ptr + i)); // 输出每个内存空间的值
}
free(ptr); // 释放内存
return 0;
}
```
在这个示例中,首先声明了一个指针变量`ptr`,然后使用`malloc`函数分配了5个整数大小的内存空间,并将指针变量`ptr`指向这块内存空间。接着,使用循环给每个内存空间赋值,并输出每个内存空间的值。最后,使用`free`函数释放内存空间。
strsep函数的使用实例C语言
strsep函数是用来分割字符串的函数,它的原型定义在string.h头文件中:
```c
char *strsep(char **stringp, const char *delim);
```
函数参数解释:
- stringp:指向一个指针的指针,指向待分割的字符串。
- delim:指定的分隔符字符串。
函数返回值:
- 如果找到了分隔符,返回之前的字符串。
- 如果已经到了字符串的末尾,返回NULL。
下面是一个使用strsep函数的例子,将一个字符串按照指定的分隔符分割成若干个子字符串:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello,world,my,name,is,John";
char *p, *temp;
printf("原始字符串:%s\n", str);
p = str;
while ((temp = strsep(&p, ",")) != NULL) {
printf("子字符串:%s\n", temp);
}
return 0;
}
```
输出结果:
```
原始字符串:hello,world,my,name,is,John
子字符串:hello
子字符串:world
子字符串:my
子字符串:name
子字符串:is
子字符串:John
```
在这个例子中,我们将字符串按照逗号分隔成了多个子字符串,每次调用strsep函数都会将待分割的字符串指针向后移动,直到字符串末尾。