C++_10_指针函数和函数指针 - 重写版
指针函数和函数指针
指针函数
类型标识符 *函数名(参数表) eg:int *f(x,y);
指针函数——1、首先他是一个“函数”,只不过一定有返回值,并且返回值为地址,需要用指针来接
2、由于返回值是地址,所以类型说明符一般都是int
3、函数名没有被括号束缚,这表示函数具有一定的独立性并且他首先必须满足函数的属性
函数指针
类型标识符 (*函数名)(参数表)
函数指针——1、首先他是一个“指针”,这里的函数名实际上应该是指针变量名,只不过为了便于区分指针函数,先这样写
2、指针的定义类型和指向函数的类型保持一致
· 3、函数名(指针变量名)被括号将其和*束缚在一起,突出这首先是一个指针
/**
* 指针函数
* 类型标识符* 函数名(参数表) eg:int* f(x, y);
* 指针函数——1、首先他是一个“函数”,只不过一定有返回值,并且返回值为地址,需要用指针来接
* 2、由于返回值是地址,所以类型说明符一般都是int
* 3、函数名没有被括号束缚,这表示函数具有一定的独立性并且他首先必须满足函数的属性
*
* 函数指针
* 类型标识符 ( * 函数名)(参数表) int(* f)(x, y);
* 函数指针——1、首先他是一个“指针”,这里的函数名实际上应该是指针变量名,只不过为了便于区分指针函数,先这样写
* 2、指针的定义类型和指向函数的类型保持一致
* 3、函数名(指针变量名)被括号将其和 * 束缚在一起,突出这首先是一个指针
*/
#include<iostream>
using namespace std;
char * zzhs(); //指针函数定义
char(*pr)(); //函数指针定义
char Ordinary_fun(); //定义一个普通的函数
int main()
{
//-----指针函数-----------------------------------------------
char* pn = zzhs(); //指针函数调用
cout << "pn = " << pn << endl; //zhizhenhanshu
cout << "*pn = " << *pn << endl; //*pn = z
//-----函数指针-----------------------------------------------
cout << "Ordinary_fun =" << Ordinary_fun << endl;
//Ordinary_fun =00007FF6DEF21550 Ordinary_fun就是函数的调用入口地址
pr = Ordinary_fun; //pr就是函数指针,被赋值为一个普通函数的入口地址
(*pr)(); //函数指针调用 (*Pr)- 解引用出函数名,相当于写出 zzhs()
return 0;
}
char * zzhs()
{
static char *p = (char*)malloc(sizeof(int));
static char b[20] = "zhizhenhanshu";
p = b;
cout << "b = " << b << endl; //b = zhizhenhanshu
cout << "&b = " << &b << endl; //&b = 00007FF69FFB6018
cout << "p = " << p << endl; //p = zhizhenhanshu
cout << "&p = " << &p << endl; //&p = 00007FF69FFB61A8
return p;
}
char Ordinary_fun() //普通的函数
{
char c[20] = "hanshuzhizhen";
cout << "c = " << c << endl; //c = hanshuzhizhen
return 0;
}
分类:
C++_语法基础_重写版
标签:
重心
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!