【C语言】指针函数与函数指针
2017-03-05 17:38
316 查看
首先,有一个小问题:
如果你了解这两种用法的含义,并且能够熟练运用这两种指针用法,那么这篇文章对你来说并没有多少参考价值。
一、指针函数:
指针函数的基本形式是
指针函数较为更好理解,其实就是一个返回值为地址的函数而已。由于返回值为地址,所以类型说明符一把都是int。而且,调用指针函数是,接收返回值的必须是同类型的指针变量。
看看这一段代码,应该可以加深理解:
上面这个程序中,指针函数的返回值是最大数的地址,这个返回值在程序中是被指针变量p接收。
在编程过程中,当遇到需要地址的情况,可以考虑使用指针函数。
二、函数指针:
函数指针相比指针函数,更加灵活,基本形式是:
指针函数和函数指针,看似只有一个括号的差别,然而实则差别很大。函数指针首先它是个指针,而指针函数本质上是个函数。
指针变量,通常使用中,我们常常用来指向数组,字符串等,但指针同时也可以指向函数。在程序编译过程中,每个函数会的得到一个入口地址,指向这个函数地址的指针,就被称为函数指针。
另外,函数指针返回值,也可以是指针。
int *ptr(int) int (*ptr)(int)
如果你了解这两种用法的含义,并且能够熟练运用这两种指针用法,那么这篇文章对你来说并没有多少参考价值。
一、指针函数:
指针函数的基本形式是
类型说明符 * 函数名(参数) 如: int *ptr(int) int *Max(int a, int b);
指针函数较为更好理解,其实就是一个返回值为地址的函数而已。由于返回值为地址,所以类型说明符一把都是int。而且,调用指针函数是,接收返回值的必须是同类型的指针变量。
看看这一段代码,应该可以加深理解:
#include <stdio.h> int *max(int *num1, int *num2) { return (*num1 > *num2 ? num1 : num2); } int main(int argc, char const* argv[]) { int a = 100; int b = 200; printf("a = %p\n", &a); printf("b = %p\n", &b); int *p = max(&a,&b); printf("p = %p\n", p); printf("max = %d\n", *p); return 0; }
a = 0x7ffefbf931f4 b = 0x7ffefbf931f0 p = 0x7ffefbf931f0 max = 200
上面这个程序中,指针函数的返回值是最大数的地址,这个返回值在程序中是被指针变量p接收。
在编程过程中,当遇到需要地址的情况,可以考虑使用指针函数。
二、函数指针:
函数指针相比指针函数,更加灵活,基本形式是:
类型说明符 (*变量名)(参数) 如: int (*ptr)(int) void (*ptr)();
指针函数和函数指针,看似只有一个括号的差别,然而实则差别很大。函数指针首先它是个指针,而指针函数本质上是个函数。
指针变量,通常使用中,我们常常用来指向数组,字符串等,但指针同时也可以指向函数。在程序编译过程中,每个函数会的得到一个入口地址,指向这个函数地址的指针,就被称为函数指针。
#include <stdio.h> void (*ptr_1)(); int (*ptr_2)(int,int); void print_1() { printf("1111111\n"); } void print_2() { printf("2222222\n"); } int sum(int num1,int num2) { return num1 + num2; } int main(int argc, char const* argv[]) { int a = 100; int b = 200; int result = 0; ptr_1 = print_1; (*ptr_1)(); ptr_1 = print_2; (*ptr_1)(); ptr_2 = sum; result = (*ptr_2)(a,b); printf("a + b = %d\n", result); return 0; }
1111111 2222222 a + b = 300
另外,函数指针返回值,也可以是指针。
相关文章推荐
- C语言:分清函数指针和指针函数
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- 巩固C语言(十)----指针数组 & 函数指针和指针函数
- 简要说明C语言中指针函数与函数指针的区别
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- (不错)C语言教程之十七:指针函数和函数指针
- [C语言]指针数组和指针数组|函数指针和指针函数
- C语言面向对象编程(定义、函数指针、指针函数)
- C语言-------指针函数与函数指针的区别
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- C语言--指针函数和函数指针
- 黑马程序员———C语言———【函数指针、指针函数、野指针、内存管理、const关键字】
- C语言指针导学(4)——分清函数指针和指针函数
- c语言指针函数和函数指针
- C语言指针导学(4)——分清函数指针和指针函数
- c语言 指针函数 函数指针
- C语言,函数指针与指针函数
- c语言指针函数与函数指针