函数指针与指针函数的使用与小结

/* ============================================================================ Name: TestFunction.c Author: lf Time: 2015年2月23日16:06:17 Copyright : Your copyright notice Description : 函数指针与指针函数的使用与小结 在C语言中: 函数名其实就是一个函数的起始地址. 同理:数组名其实就是数组首元素的地址.函数指针 在程序中定义了一个函数,那么在编译时编译系统为函数代码分配一段存储空间, 这段存储空间的起始地址称为这个函数的指针. 可定义一个指向函数的指针变量存放函数的起始地址,即该指针变量指向该函数. 例如: int (*p)(int,int); 定义p是指向函数的指针变量.它所指向的函数输入参数为两个int型,返回值为int型. p的类型用int (*)(int,int)表示 指针函数 函数返回值是指针. 定义方式: 类型名 *函数名(参数表列);小结: 区分指针函数与函数指针最简单的方式: 看函数名前面的指针*号有没有被括号包含,如果被包含就是函数指针,反之则是指针函数 其实从字面意思也可以看出来些端倪: 指针函数:本质是一个函数,返回值为一个指针的函数 函数指针:本质是一个指针,只不过该指针指向了一个函数 ============================================================================ */#include <stdio.h>#include <stdlib.h>//声明sub函数int sub(int a,int b);//利用typedef定义sub的函数指针typedef int (*subFunction)(int a,int b);//声明一个指针函数int *fu(int x);//利用typedef定义一个指针函数的类型typedeftypedef int *func(int x);int main(void) {testFunctionPointer();testPointerFunction();return EXIT_SUCCESS;}//函数指针void testFunctionPointer() {//函数名其实就是一个函数的起始地址printf("sub function address=%x\n", sub);printf("======================\n");//利用函数指针调用sub方法subFunction s = sub;//此时s指向了sub函数的起始地址.所以打印结果同上printf("s function address=%x\n", s);printf("======================\n");s(9, 3);}int sub(int a,int b){int c;c=a-b;printf("sub result=%d\n",c);printf("======================\n");return c;}//指针函数void testPointerFunction() {//方式一int number = 9527;int *p = fu(number);//取出地址中的内容*pprintf("number=%d\n", *p);printf("======================\n");//方式二int num = 502;//注意这句func *f = fu;int *pointer = f(num);//取出地址中的内容*pointerprintf("num=%d\n", *pointer);printf("======================\n");}int *fu(int x){int address=&x;return address;}

,把自己当傻瓜,不懂就问,你会学的更多

函数指针与指针函数的使用与小结

相关文章:

你感兴趣的文章:

标签云: