网站建设哪家公司好/如何搭建个人网站
右左法则——判断复杂的声明
对于一个复杂的声明,可以用右左法则判断它是个什么东西:
1.先找到变量名称
2.从变量名往右看一个部分,再看变量名左边的一个部分
3.有小括号先看小括号里面的,一层一层往外看
4.先看到的东西优先级大,放在名称的右边
例:
int (*p)[4]——p是一个指针,指向一个可包含4个变量的数组,这四个变量是int类型——数组指针
int(*p[4])(int,int)——p是一个可包含4个变量的数组,数组里面的变量是指针,指针指向参数列表为(int,int)的函数,函数返回int类型的值——函数指针数组
int (*fn(int n))(int,int)——fn是一个参数列表为(int n)的函数,返回值为指针,指针指向参数列表为(int,int)的函数,这个函数的返回值为int类型——函数指针函数
指针变量
指针变量有以下分类:单指针,双指针,指针数组,数组指针,指针函数,函数指针
单指针 int *p;
单指针可以和变量、一位数组、二维数组、函数联系
变量取地址改值:p = &a; *p=a;
数组名等于数组首地址: p = b; p=&b[0] ;操作: b[i]== *(b+i)== *(p+i) ==p[i]== *p++
二维数组的数组名不是单指针p = c[0]; p = &c[0][0]; 取值: c[i][j]== *(*(c+i)+j) == *(p+i*4+j) 把二维数组拉成一维数组存;*p++
数组指针 int(*p)[4]
指向数组的指针
一般与二维数组联系 :c是一个数组,p是数组指针p=c; 有c[i][j]==*(*(c+i)+j)==*(*(p+i)+j)==p[i][j]
二维数组的数组名是一个行指针,数组名+1要加一行的字节数:
如int c[3][4],c+1加了16个字节,c+1==c[1][0];
c[0]是一个单指针,+1是加一个单位的字节数:c[0]+1==c[0][1]
指针数组 int *q[3]
存储指针的数组
q是个数组名,不能被赋值,只能q[0]=&a,q[1] = &b;……
使用定个数不定长度的字符串:char* name[3]={“张三”,"李四",“高启强”};
双指针 int **qq
指针数组的数组名可以当作双指针用:int **qq;int *q[3];qq = q;
int main()
{int a = 3, b = 4, c = 6;int* q[3] = { &a,&b,&c };int** qq = q;for (int i = 0; i < 3; i++)cout << *q[i] << "--" << **(q + i) << endl;//3--3 4--4 5--5for (qq = q; qq < q + 3; qq++)cout << **qq << endl;//3 4 5return 0;
}
双指针指向单指针:int **qq;int *qm;qq = &qm;
指针函数 char * fn(int n)
返回值为指针的函数
不要返回指向栈内存的指针,在函数内使用的栈空间最终会随着函数结束而释放;
函数返回指针的方法1.可以申请动态内存空间,在堆区中;2.使用static,在静态区中3.从外部传入指针,形参用二级指针接收。
//错误使用方法
char* GetMemory()
{char p[100];return p;
}
//正确方法
char* GetMemory1()//堆
{char* p = new char[100];return p;
}
char* GetMemory2()//静态
{static char p[100];return p;
}
void GetMemory3(char** p, int n)//传参
{*p = new char[n];
}
void main()
{// char* p = GetMemory1();// char* p = GetMemory2();// char* p = GetMemory3();char* p = NULL;GetMemory4(&p, 100);strcpy_s(p, 6, "12345");puts(p);delete[]p;p = NULL;
}
函数指针 int(*pfn)(int n)
指向函数的指针
函数名代表函数的入口地址,定义函数指针需要知道函数的基类型。可以直接指向一个同基类的函数
int Max(int a, int b)
{return a > b ? a : b;
}
int main()
{int (*p)(int,int);//函数指针p = MAX;//MAX函数的基类型和p一样
//下面两行的作用一样int m = MAX(3,5);int n = p(3,5);
}
函数指针的用法:
1.函数转移表
多种同类函数集合在一起方便使用函数指针数组
int Max(int a, int b)
{return a > b ? a : b;
}
int Min(int a, int b)
{return a < b ? a : b;
}
int Add(int a, int b)
{return a + b;
}
int Sub(int a, int b)
{return a - b;
}
int Mul(int a, int b)
{return a * b;
}
int Div(int a, int b)
{if (b != 0)return a / b;
}
int main()
{int (*p[])(int, int) = { Max,Min,Add,Sub,Mul,Div }; //函数指针数组int n = sizeof(p) / sizeof(p[0]);for (int i = 0; i < n; i++)//方便4,7各种计算cout << p[i](4, 7) << endl;
}
2.作为另一个函数的参数
如下test函数有三个形参:函数指针p,整形a,整形b
void test(int (*p)(int, int), int a, int b) //p = Max
{cout << "test:" << p(a, b) << endl;
}
int main()
{test(MAX, 9, 0);//函数名是函数首地址,可以直接传入
}
3.作为函数指针函数的返回值
int Add(int a, int b)//2,3
{return a + b;
}
int (*fn(int n))(int, int) //fn函数的返回值是个函数指针,指向int (int,int)的函数
{cout << "fn : n = "<< n << endl;//fu:n = 20return Add;
}
int main()
{cout << fn(20)(2, 3) << endl;//5// 相当于:int (*q)(int, int) = fn(20); q指向fn的返回值Add//cout << q(2, 3) << endl;使用Add(2,3)
}
相关文章:

【C++】右左法则,指针、函数与数组
右左法则——判断复杂的声明对于一个复杂的声明,可以用右左法则判断它是个什么东西:1.先找到变量名称2.从变量名往右看一个部分,再看变量名左边的一个部分3.有小括号先看小括号里面的,一层一层往外看4.先看到的东西优先级大&#…...

打通数据价值链,百分点数据科学基础平台实现数据到决策的价值转换 | 爱分析调研
随着企业数据规模的大幅增长,如何利用数据、充分挖掘数据价值,服务于企业经营管理成为当下企业数字化转型的关键。 如何挖掘数据价值?企业需要一步步完成数据价值链条的多个环节,如数据集成、数据治理、数据建模、数据分析、数据…...

C++之多态【详细总结】
前言 想必大家都知道面向对象的三大特征:封装,继承,多态。封装的本质是:对外暴露必要的接口,但内部的具体实现细节和部分的核心接口对外是不可见的,仅对外开放必要功能性接口。继承的本质是为了复用&#x…...

ThingsBoard-RPC
1、使用 RPC 功能 ThingsBoard 允许您将远程过程调用 (RPC) 从服务器端应用程序发送到设备,反之亦然。基本上,此功能允许您向/从设备发送命令并接收命令执行的结果。本指南涵盖 ThingsBoard RPC 功能。阅读本指南后,您将熟悉以下主题: RPC 类型;基本 RPC 用例;RPC 客户端…...

java分治算法
分治算法介绍 分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或 相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题 的解的合并。这个技…...

【Flutter】【Unity】使用 Flutter + Unity 构建(AR 体验工具包)
使用 Flutter Unity 构建(AR 体验工具包)【翻译】 原文:https://medium.com/potato/building-with-flutter-unity-ar-experience-toolkit-6aaf17dbb725 由于屡获殊荣的独立动画工作室 Aardman 与讲故事的风险投资公司 Fictioneers&#x…...

MC0108白给-MC0109新河妇荡杯
MC0108白给 小码哥和小码妹在玩一个游戏,初始小码哥拥有 x的金钱,小码妹拥有 y的金钱。 虽然他们不在同一个队伍中,但他们仍然可以通过游戏的货币系统进行交易,通过互相帮助以达到共赢的目的。具体来说,在每一回合&a…...

求职(JAVA程序员的面试自我介绍)
背景 在找工作的过程中,在面试的环节,大多数面试官首先都会叫你自我介绍一下。一般是3到5分钟内。不过经过我面试的无数的公司还有曾经也面试过大多数的求职者。国内很多的程序员面试都极其不专业。有一种很随心所欲的感觉。所以经常遇到求职者吐槽遇到了…...

金三银四季节前端面试题复习来了
vue3和vue2的区别有哪些 Diff算法的改进Tree Sharing优化主要的API双向绑定改为es6的proxy原生支持tscomposition API移除令人头疼的this 说说CSS选择器以及这些选择器的优先级 !important 内联样式(1000) ID选择器(0100) 类选…...

【C/C++基础练习题】简单语法使用练习题
🍉内容专栏:【C/C要打好基础啊】 🍉本文内容:简单语法使用练习题(复习之前写过的实验报告) 🍉本文作者:Melon西西 🍉发布时间 :2023.2.10 目录 1、输入三个数…...

堆排序
章节目录:一、相关概述1.1 基本介绍1.2 排序思想二、基本应用2.1 步骤说明2.2 代码示例三、结束语一、相关概述 1.1 基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。它的最坏最好平均时间复杂度均为 O(nlogn)&#x…...

PLC是什么?PLC相关知识小科普
欢迎各位来到东用知识小课堂1.PLC是什么:●PLC就是可编程控制器,它应用于工业环境,必须具有很强的抗干扰能力、广泛的适应能力和应用范围。●PLC是“数字运算操作的电子系统”,也是一种计算机,它是“专为在工业环境下应…...

BERT简介
BERT: BERT预训练模型训练步骤: 使用Masked LM方式将语料库中的某一部分的词语掩盖住,模型通过上下文预测被掩盖的信息,从而训练出初步的语言模型在语料库中选出连续的上下语句,并使用Tranformer模块识别语句的连续性通…...

OpenStack云平台搭建(5) | 部署Nova
目录 1、登录数据库配置 2、安装nova 3、计算节点上安装nova 4、在controller节点上 nova组件是用来建虚拟机的(功能:负责响应虚拟机创建请求、调度、销毁云主机) nova主要组成: (1).nova api service------安装在controlle…...

【重要】2023年上半年有三AI新课程规划出炉,讲师持续招募中!
2023年正式起航,想必大家都已经完全投入到了工作状态中,有三AI平台今年将在已有内容的基础上,继续进行新课程开发,本次我们来介绍今年上半年的课程计划,以及新讲师招募计划。2023年新上线课程我们平台的课程当前分为两…...

【正点原子FPGA连载】第八章UART串口中断实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第八章UART串口中…...

【云原生】解读Kubernetes三层网络方案
在上一篇文章中,我以网桥类型的 Flannel 插件为例,为你讲解了 Kubernetes 里容器网络和 CNI 插件的主要工作原理。不过,除了这种模式之外,还有一种纯三层(Pure Layer 3)网络方案非常值得你注意。其中的典型…...

elasticsearch8.3.2搭建部署
Elasticsearch8.3.2搭建部署详细步骤 0.过往文章 ES-6文章: Elasticsearch6.6.0部署、原理和使用介绍: https://blog.csdn.net/wt334502157/article/details/119515730 ES-7文章: Elasticsearch7.6.1部署、原理和使用介绍: https://blog.csdn.net/wt…...

MySQL_InnoDB引擎
InnoDB引擎 逻辑存储结构 表空间(ibd文件),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollba…...

json-server使用
文章目录json-server使用简介安装json-server启动json-server操作创建数据库查询数据增加数据删除数据修改数据putpatch配置静态资源静态资源首页资源json-server使用 简介 github地址 安装json-server npm install -g json-server启动json-server json-server --watch db…...

实现mint操作(参考pancake)
区块链发展越来越好,nft已经火了很久,今天写一下如何用js、web3js、调用合约,实现mint nft。简单的调用://引入一些依赖 (根据需要,有一些是其他功能的) import useActiveWeb3React from ./web3…...

Linux进程信号
目录 一、认识信号 1.1 生活角度的信号 1.2 技术角度的信号 1.3 信号的发送与记录 1.4 常见信号处理方式 二、产生信号 2.1 通过终端按键产生信号(核心转储) 2.2 通过系统函数向进程发送信号 2.2.1 kill()函数 2.2.2 raise()函数 2.2.3 abort()函数 2.3 因软件条件…...

1.7 Web学生管理系统
1.定义通讯协议基于前面介绍过的 FLask Web 网站 与 urlib 的访问网站的方法,设计一个综合应用实例。它是一个基于 Web 的学生记录管理程序。学生的记录包括 id(学号) 、name(姓名) 、grade(成绩),服务器的作用是建立与维护一个Sqllite 的学生数据库 stu…...

前端教学视频分享(视频内容与市场时刻保持紧密相连,火热更新中。。。)
⚠️获取公众号 本次要想大家推荐一下本人的公众号,在微信中搜索公众号 李帅豪在对话框中输入前端视频四个字即可立即获取所有视频,不收费无广告!!! 本公众号收集了近两年来前端最新最优秀的学习视频,涵盖…...

Docker-consul的容器服务更新与发现
一.Consul概述1.1 什么是服务注册与发现服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起…...

Java笔记-线程中断
线程的中断 1.应用场景: 假设从网络下载一个100M的文件,如果网速很慢,用户等得不耐烦,就可能在下载过程中点“取消”,这时,程序就需要中断下载线程的执行。 2.常用中断线程的方法: 1.使用标…...

js中的自调用表达式
自调用表达式 由函数表达式创建的函数可以自调用,称之为自调用表达式。 语法 由函数表达式创建函数: const myFn function () {let a 100console.log(a);return a } myFn() //调用后执行,输出100表达式后面紧跟 ( ) 则会自动调用: const myFn fu…...

Python操作的5个坏习惯,你中了几个呢?
很多文章都有介绍怎么写好 Python,我今天呢相反,说说写代码时的几个坏习惯。有的习惯会让 Bug 变得隐蔽难以追踪,当然,也有的并没有错误,只是个人觉得不够完美。 注意:示例代码在 Python 3.6 环境下编写 …...

C++并发与多线程编程(3)---线程间共享数据
主要内容:共享数据带来的问题使用互斥量保护数据数据保护的替代方案共享数据带来的问题当涉及到共享数据时,问题可能是因为共享数据修改所导致。如果共享数据是只读的,那么只读操作不会影响到数据,更不会涉及对数据的修改…...

洞察:2022年医疗行业数据安全回顾及2023年展望
过去的2022年,统筹安全与发展,在医疗信息化发展道路中,数据安全不可或缺。这一年,实施五年多的《网络安全法》迎来首次修改,《数据安全法》、《个人信息保护法》实施一周年,配套的《数据出境安全评估办法》…...