您的位置:首页 > 编程语言 > C语言/C++

函数指针2017/12/2C语言学习内容总结

2017-12-03 12:44 507 查看
1.下面一段代码:

#ifndef PI 3.1415926

#ifdef PI 3.1415926

endif;

//的作用是:防止头文件多次被引入。

2.代码不是试出来的,是想出来的。

3.#include<assert>//是断言的头文件。

4.int *ar[10];//是定义了一个存放整型变量指针的数组。

   int (*p)[10];//p是一个指向大小为10的整型数组的指针。

5.函数名有两个含义:(1)可以当做函数调用时使用。如:add();

                                   (2)可以表示函数的地址。如:add;

6.下面一段代码:

   int (*pfun)(int,int);//pfun是一个返回值为int形参为int、int的函数指针。

   int *pfun(int,int );//是声明了一个返回值为int*形参为int、int的函数。

7.下面一段代码:

#include<iostream>

using namespace std;

int my_add(int x, int y) { int z = x + y; return z; }

int my_sub(int x, int y) { int z = x - y; return z; }

int my_mul(int x, int y) { int z = x*y; return z; }

int my_div(int x, int y) { int z = x / y; return z; }

int main()

{
int x = 10;
int y = 20;
int(*pfun)(int, int) = my_add;
int(*pfun1[4])(int, int) = { my_add,my_sub,my_mul,my_div };
int z = pfun(x,y);
int z1 = (*pfun)(x, y);
int z2 = (*pfun1[0])(x,y);
cout<< x << "+" << y << "=" << z<<endl;
cout << x << "+" << y << "=" << z1 << endl;
cout << x << "+" << y << "=" << z2 << endl;
return 0;
}

//函数的调用方式有两种:(1)z=(*pfun)(x,y);//旧格式。

                                         (2)z=pfun(x,y);//新格式。

8.下面一段代码:

z=((int (*)(int,int ))(0x004100f))=100;//先将一个地址值强转为一个函数指针类型,然后对它进行取指向操作再进行赋值操作。

9.注意:函数指针也可以作为函数的形参使用。

10.对于下面的函数指针:

int (*)(int ,int )fun(int (*p)(int,int )){......}//是不能编译通过的。必须进行以下的声明:

int (*fun(int (*p)(int,int )))(int ,int ){......}

但是这种代码在看时不容易看懂。可以用以下的代码使这种表示变得清晰易懂:

typedef int (*PFUN)(int,int);

PFUN fun(PFUN p){........}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: