函数指针和指针函数 C语言
时间: 2023-12-23 10:17:30 浏览: 41
函数指针和指针函数是C语言中两个不同的概念。
函数指针是一个指向函数的指针变量,它存储了函数的地址。可以通过函数指针来调用函数。函数指针的声明方式类似于函数声明,只是在函数名前面加上了一个指针标识符(*)。例如,int (*funcPtr)();表示funcPtr是一个指向返回类型为int的函数的指针。
指针函数是一个返回指针的函数,它的返回值是一个指针类型。指针函数的声明方式与普通函数类似,只是在返回类型前面加上一个指针标识符(*)。例如,int* ptrFunc();表示ptrFunc是一个返回int指针的函数。
函数指针和指针函数的区别在于它们的定义和使用方式。函数指针用于指向函数的地址,并可以通过函数指针来调用函数。而指针函数是一个返回指针的函数,它的返回值是一个指针类型。
总结一下:
- 函数指针是一个指向函数的指针变量,用于存储函数的地址。
- 指针函数是一个返回指针的函数,它的返回值是一个指针类型。
引用:转载自:https://blog.csdn.net/qq_43710979/article/details/88030147 C语言函数指针和指针函数的区别
引用:指针函数和函数指针经常会混淆,一个是返回指针的函数,另一个是指向函数的指针,下面就分别解释指针函数和函数指针的区别。
引用:而函数指针就像整形指针一样,它指向一个函数的地址。有一个函数声明如下: int test() { return 0; }
相关问题
函数指针和指针函数c语言
在C语言中,函数指针和指针函数是两个不同的概念。
1. 函数指针:函数指针是指向函数的指针变量。它可以用来调用函数或者将函数作为参数传递给其他函数。函数指针的声明方式为:返回类型 (*指针变量名)(参数列表)。以下是一个示例:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*funcPtr)(int, int); // 声明一个函数指针
funcPtr = add; // 将函数的地址赋值给函数指针
int result = funcPtr(3, 4); // 通过函数指针调用函数
printf("Result: %d\n", result);
return 0;
}
```
输出结果为:Result: 7
2. 指针函数:指针函数是返回指针类型的函数。它可以返回一个指向某种类型的指针。指针函数的声明方式为:返回类型 (*函数名)(参数列表)。以下是一个示例:
```c
#include <stdio.h>
int* createArray(int size) {
int* arr = (int*)malloc(size * sizeof(int));
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
return arr;
}
int main() {
int* (*funcPtr)(int); // 声明一个指针函数指针
funcPtr = createArray; // 将指针函数的地址赋值给指针函数指针
int* array = funcPtr(5); // 通过指针函数指针调用指针函数
for (int i = 0; i < 5; i++) {
printf("%d ", array[i]);
}
free(array);
return 0;
}
```
输出结果为:1 2 3 4 5
c语言函数指针和指针函数
函数指针和指针函数都是指针类型的函数,但它们的定义和用法不同。
函数指针是指向函数的指针,用于存储函数的地址。它可以像普通指针一样进行赋值、传参和调用,例如:
```c
// 声明函数指针
int (*pFunc)(int, int);
// 定义函数
int add(int a, int b) {
return a + b;
}
// 指向函数的指针赋值
pFunc = add;
// 调用函数
int result = pFunc(1, 2); // result为3
```
指针函数是返回指针类型的函数,它的返回值是指针,例如:
```c
// 声明指针函数
int* getArray(int size) {
int* arr = (int*)malloc(sizeof(int) * size);
return arr;
}
// 调用指针函数
int* array = getArray(10);
```
在调用指针函数时,它会返回一个指向动态分配数组的指针。
总之,函数指针和指针函数虽然都是指针类型的函数,但它们的定义和用法是不同的。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)