C++学习笔记 -- 函数指针与指针函数

简介: 函数指针:指向函数的指针,首先它是指针变量(同指向一个整形变量、字符、数组一样),其次它指向一个函数(地址)。 声明:函数类型 (* 指针变量名)(形参列表) 函数类型,指明函数的返回类型,由于()优先级高于*,所以指针变量名外的括号不能少,后面形参列表表示指针变量指向的函数所带的参数列表。

函数指针:指向函数的指针,首先它是指针变量(同指向一个整形变量、字符、数组一样),其次它指向一个函数(地址)。

声明:函数类型 (* 指针变量名)(形参列表)

函数类型,指明函数的返回类型,由于()优先级高于*,所以指针变量名外的括号不能少,后面形参列表表示指针变量指向的函数所带的参数列表。


//
int max(int, int);

int (* p)(int, int) = &max;

int a, b, c, d;
cout<<"Input 3 numbers:"<<endl;
cout<<"a:";
cin>>a;
cout<<"b:";
cin>>b;
cout<<"c:";
cin>>c;

d = p(p(a, b), c);

cout<<"Max number:"<<d<<endl;


int max(int x, int y)
{
return x > y ? x : y;
}

上面相当于用函数指针p,代替了max,为什么能这样?

事实上,每一个函数都有一个入口地址,这个地址相当于一个指针,而函数名表示的就是该函数的首地址(入口地址)。这样的话就有:p = &a 同 p = a 等价,下面的代码也是等价的:


//
d = (* p)(( *p)(a, b), c);

//
d = p(p(a, b), c);

//
d = max(max(a, b), c);

 

指针函数:首先它是一个函数,其次它返回的类型是一个指针。

声明:类型标识符 *函数名(参数列表)

类型标识符,用于限定返回的类型(是指向型、字符型或者数组)

 

参考:

函数指针

目录
相关文章
|
1天前
|
C++ 数据格式
LabVIEW传递接收C/C++DLL指针
LabVIEW传递接收C/C++DLL指针
12 1
|
1天前
|
编译器 C++
C/C++杂谈——指针常量、常量指针
C/C++杂谈——指针常量、常量指针
9 0
|
1天前
|
C++ 编译器 程序员
C++ 从零基础到入门(3)—— 函数基础知识
C++ 从零基础到入门(3)—— 函数基础知识
|
1天前
|
C++ 编译器
数组指针、函数指针、指针数组、函数 指针数组、指针函数详细总结
数组指针、函数指针、指针数组、函数 指针数组、指针函数详细总结
|
1天前
|
存储 安全 程序员
C++:智能指针
C++:智能指针
20 5
|
1天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
34 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
|
1天前
|
存储 安全 C++
深入理解C++中的指针与引用
深入理解C++中的指针与引用
10 0
|
1天前
|
算法 C++
【C++入门到精通】智能指针 shared_ptr循环引用 | weak_ptr 简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 shared_ptr循环引用 | weak_ptr 简介及C++模拟实现 [ C++入门 ]
11 0
|
1天前
|
安全 算法 数据安全/隐私保护
【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]
13 0