指针函数和函数指针的区别,帮忙举例
时间: 2023-08-14 10:31:35 浏览: 87
指针函数和函数指针是两个不同的概念。
指针函数是返回指针的函数,它的返回值是指向某种类型的指针。例如:
```
int* getPointer() {
int* p = new int(10);
return p;
}
```
这个函数返回一个指向int类型的指针,指向的值为10。可以通过调用getPointer()函数获取这个指针。
函数指针是指向函数的指针,它指向某个函数的地址。例如:
```
int add(int a, int b) {
return a + b;
}
int (*funcPtr)(int, int) = &add;
```
这个函数指针funcPtr指向了add函数的地址。可以通过调用funcPtr来执行add函数。
因此,指针函数和函数指针是两个不同的概念,前者是返回指针的函数,后者是指向函数的指针。
相关问题
函数指针、指针函数 举例
函数指针和指针函数是C语言中的两个重要概念。
1. 函数指针:
函数指针是指向函数的指针变量,可以用来调用相应的函数。函数指针的声明方式为:返回类型 (*指针变量名)(参数列表)。
举例:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*funcPtr)(int, int); // 声明一个函数指针变量
funcPtr = add; // 函数指针指向add函数
printf("Result: %d\n", funcPtr(5, 3)); // 调用add函数
funcPtr = subtract; // 函数指针指向subtract函数
printf("Result: %d\n", funcPtr(5, 3)); // 调用subtract函数
return 0;
}
```
上述示例中,声明了一个函数指针变量`funcPtr`,然后将其分别指向`add`和`subtract`两个函数,并通过函数指针调用相应的函数。
2. 指针函数:
指针函数是一个返回指针的函数,即函数的返回值类型为指针类型。
举例:
```c
#include <stdio.h>
int* createArray(int size) {
int *arr = (int*) malloc(size * sizeof(int)); // 动态分配内存
return arr;
}
int main() {
int *ptr;
ptr = createArray(5); // 调用指针函数创建数组
if (ptr != NULL) {
for (int i = 0; i < 5; i++) {
ptr[i] = i + 1;
printf("%d ", ptr[i]);
}
free(ptr); // 释放内存
}
return 0;
}
```
上述示例中,`createArray`是一个指针函数,它用于动态创建一个整型数组,并返回数组的指针。在`main`函数中,通过调用`createArray`函数创建了一个大小为5的整型数组,并使用返回的指针进行操作。最后需要记得使用`free`函数释放内存。
函数指针与指针函数的用法举例
函数指针和指针函数是两个不同的概念。
1. 函数指针(Function Pointer)是指向函数的指针变量。通过函数指针,可以在程序运行时动态地调用不同的函数。下面是一个函数指针的用法示例:
```c
#include <stdio.h>
void hello() {
printf("Hello, World!\n");
}
void goodbye() {
printf("Goodbye, World!\n");
}
int main() {
void (*func)();
int choice;
printf("Enter your choice (1 for 'hello', 2 for 'goodbye'): ");
scanf("%d", &choice);
if (choice == 1) {
func = hello;
} else {
func = goodbye;
}
func(); // 调用选择的函数
return 0;
}
```
在上面的示例中,根据用户的选择,通过函数指针 `func` 动态地调用不同的函数。
2. 指针函数(Pointer to a Function)是一个返回指针的函数。下面是一个指针函数的用法示例:
```c
#include <stdio.h>
int* createArray(int size) {
int* arr = (int*) malloc(size * sizeof(int));
return arr;
}
int main() {
int* arr;
int size;
printf("Enter the size of the array: ");
scanf("%d", &size);
arr = createArray(size);
// 使用数组
free(arr); // 释放内存
return 0;
}
```
在上面的示例中,`createArray` 是一个指针函数,它返回一个指向动态分配的整数数组的指针。在主函数中,我们可以使用这个返回的指针来操作数组。
总结:函数指针用于动态调用不同的函数,而指针函数则是返回指针的函数。它们在不同的场景中有各自的用途。
阅读全文