C++函数与指针


本文摘自网络,作者炎欲天舞,侵删。

最近在看C++ primer plus,感觉函数与指针这一章难点比较多,记写笔记,加强理解.

From C++ Primer Plus: Chapter 7 Function:C++ Programming Modules

1. 如何声明函数指针?

和函数原型类似: 需要声明指针指向函数的返回值和参数列表


1

2

3

4

5

6

7

double pam(int); //参数为int 类型,返回值为double 类型的函数

double (*pf);(int//指向参数为int类型,返回值为double 类型的指针

pf = pam;   //函数名代表了函数的地址

 

double x = pam(4); //函数名调用

double x = (*pf)(4); //指针调用

double x = pf(4); //C++也允许将指针名当作函数名使用

2. C++ 11 自动类型推断


1

2

3

const double * f1(const double *, int);

const double * (*p1)(const double *, int); //p1 poitns to f1

auto p2 = f1; //C++11 automatic type deduction,p2 points to f1 as well

3. 将指针名当作函数名使用


1

2

3

4

//前面函数为double *类型,cout第一部分返回double指针,第二部分返回double指针指向的值

cout<<(*p1)(av,3)<<":"<<*(*p1)(av,3)<<endl;

//和上面的cout一样只不过是使用函数指针名来调用函数

cout<<p2(av,3)<<":"<<*p2(av,3)<<endl;

4. 函数指针数组


1

2

3

4

5

6

7

8

const double *(*pa[3]) (const double *,int) = {f1,f2,f3}; //创建函数指针数组

//通过指针调用函数,得到返回的指针

const double *px = pa[0](av,3); //call by pointer as if it were a function name

const double *py = (*pa[0])(av,3); //正常调用

 

//得到函数返回指针指向的值

double x = *pa[0](av,3);

double x = *(*pa[0])(av,3);

5. 指向指针数组的指针

指针数组和数组指针的区别


1

2

*pd[3] //an array of 3 pointers

(*pd)[3] //a pointer to an array of three elements

指向数组的指针


1

<br>

1 auto pc = &pa; //&pa是整个数组的地址, pa是数组第一个元素首地址

2

3 const double * (*(*pd)[3])(const double *, int ) = &pa; //和第一个等价

4

5 **&pa = *pa = pa[0]

阅读剩余部分

相关阅读 >>

c语言求平方函数是什么

c++引用和指针的区别是什么?

c语言指针用法有哪些

c语言定义函数

c语言中有且唯一的函数是什么函数

c语言中字符串连接函数是什么

c语言中将一个字符串转换到整型数据类型的函数是什么?

c语言中文本输出的函数名称是什么?

c语言sqrt函数的用法

c语言中有且唯一的函数是什么

更多相关阅读请进入《指针》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...