带你玩转指针——指针进阶(一)

news2024/11/15 8:20:57

指针的概念:

  1. 指针就是变量,用来存放地址

  1. 指针的大小是固定的4/8个字节(32位平台/64位平台)

  1. 指针也是有类型的,指针类型决定了+-步长,指针解引用时的权限

字符指针

在前面的学习我们知道了字符指针的初阶应用

假如是字符串呢,字符指针该怎么运用

我们取出字符串abc中a的地址放到指针pa中,

我们以printf("%c\n", *pa); 打印当然是打印a了

printf("%s\n", pa); 打印字符串,pa是a的地址,从a的地址开始打印遇到\0结束

我们还有另外的写法

char* pa = "abc"; 取a的地址放到指针pa中

printf("%s\n", pa); 打印字符串从a的地址开始打印,遇到\0结束

这个程序输出结果是多少

通过分析知道str1!=str2

所以str3==str4

输出的结果

指针数组

在前面我们文章我们也提过指针数组

指针数组本质还是数组,不过是存放指针罢了,即存放地址的数组

数组指针

数组指针是什么,通过主语关系我们也知道,数组指针是指针,前面有修饰词数组,那么就说明是存放数组的指针

存放数组的指针?

我们怎么用呢?

我们在前面中可以通过指针打印字符串,我们可以通过指针打印数组吗

不可以,因为字符串有结束标志\0,数组没有它的结束标志

[]的优先级大于*,所以我们加括号将* pa括起来,确保pa是指针类型

其实一维数组使用数组指针是不好的,因为它本身就是一个数组,你只能存整个数组的地址,不能很好的访问数组内的内容。

&数组名和数组名有什么区别呢

&数组名是直接取出数组的地址(默认是首地址),当&数组名+1是跳过整个数组

数组名是首元素的地址,数组名+1,是跳到数组的下一个元素

eg:

可以很容易看出数组名+1,然后地址+4,跳过一个元素四个字节

通过计算可以看出,&数组名+1,跳过了40个字节也就是10的元素,即整个数组

那么我们数组的使用场景是什么,我们数组指针可以运用到二维数组中,将二维数组模拟成一维的形式

我们知道数组指针是存储数组的,上面的代码怎么理解呢

数组参数、指针参数

当书写一个函数时,我们书写函数的形参可以怎么书写

一维数组的传参

我们常见的可以看到上面的三种传参方式

二维数组传参

一级指针传参

当要传指针给形参,我们可以用一级指针接收

那么我们形参是一级指针,实参是什么?

地址\一级指针

二级指针传参

当我们要传二级指针给形参时,我们可以用二级指针接收

形参是二级指针时,实参是什么?

一级指针地址、二级指针

函数指针

变量、数组有地址,那么我们的函数有没有地址呢?

我们看出,我们的函数也是有地址的,我们可以将地址存在指针中,所以我们就有了函数指针的概念

前面我们知道数组名表示数组首元素的地址

那么函数名可以表示地址吗?

可以看出,函数名也是可以表示函数的地址的

我们怎么使用函数指针呢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

xxljob 调度中心项目 调度一个方法到我们自己的项目,他是咋执行的

目录 1 需求2 实现1 需求 xxljob 调度中心项目 调度一个方法到我们自己的项目,他是咋执行的 2 实现 我们的项目首先是netty 服务器接收到,然后转发到run方法里面 核心就是下面的这个map对象 // 任务启动之后,时间一到就 创建一个 JobThread ,就放到这个priva…

【Linux kernel 文件系统入门及渐进 1 -- sysfs 介绍】

文章目录1.1 Sysfs 介绍1.1.1 kobject 产生背景1.1.2 主要的数据结构1.1.3 数据结构实现1.2 attribute 的功能概述1.2.1 struct attribute 实现1.2.2 attribute 文件的创建1.2.3 attibute 文件的 read 和 write1.1 Sysfs 介绍 Sysfs 是一个基于 RAM 的文件系统,它和…

如何优化.so mmap内存占用

1)如何优化.so mmap内存占用 ​2)模拟器下物理碰撞失效 3)Unity RenderTexture的释放在安卓上并不能使GL内存完全回落 4)数字人中,怎么做到胡子固定在嘴巴皮肤上 这是第319篇UWA技术知识分享的推送。今天我们继续为大家…

docker容器入门介绍

一、什么是docker容器 容器(Container)是基于镜像创建的运行实例,一个容器中可以运行一个或多个应用程序(jdk开发的java应用 程序)。 Docker 可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打…

对外投资数据集

一、2009-2018年各省省际对外非金融类直接投资流量情况数据来源: 中国商务年鉴2、时间跨度:2009-2018年3、区域范围:全国各省份二、2003-2018 OFDI对外直接投资存流量(分国家)与分省份对外直接投资存流量1、…

一个在关键路径上面隐藏了11个月的BUG:DragonOS进程切换查错

前言的前面 DragonOS是一个从0开始研发内核及用户态环境的,独立自主的,面向服务器领域的开源操作系统,提供Linux兼容性。 官网:https://DragonOS.org 代码仓库:GitHub - fslongjin/DragonOS: 一个64位的操作系统。A…

基于jsp+sevlet+mysql实现用户登陆和增删改查功能

基于jspsevletmysql实现用户登陆和增删改查功能一、系统介绍二、功能展示1.用户登陆2.用户列表3.查询用户信息4.添加用户信息5.修改用户信息6.删除用户信息三、其它系统四、获取源码一、系统介绍 系统主要功能: 用户登陆、添加用户、查询用户、修改用户、删除用户 …

用javascript分类刷leetcode4.贪心(图文视频讲解)

什么是贪心算法 贪心法,又称贪心算法,贪婪算法,在对问题求解时,总是做出在当前看来最好的选择,期望通过每个阶段的局部最优选择达到全局最优,但结果不一定最优 适用场景:简单的说,…

手把手YOLOv5输出热力图

环境要求 我的版本是YOLOV5 7.0 先看结果: 结果仅供参考 具体步骤一: 首先配置好YOLO V5环境 这个采用pip install requirements即可 具体配置环境可以看我其他的博客有详细介绍 GPU环境自己配置 步骤二: 运行YOLO 没问题,输…

Excel表格的导入导出——EasyExcel

参考视频 csdn参考地址 一、导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version> </dependency>二、实体类 方式一&#xff1a;Excel Property&#xff08;&…

Kubernetes Pod 底层实现原理

文章目录前言一、探索 Container1.1 设置实验环境&#xff08;playground&#xff09;1.2 探索容器的 namespace1.3 探索容器的 cgroupsCheck the memory limit.二、探索 Pod2.1 设置实验环境&#xff08;playground&#xff09;2.2 探索 Pod 的容器2.3 探索 Pod 的命名空间2.4…

UDP协议重点总结(附实例)

文章目录前言一、网络的原生情况二、UDP协议2.1 UDP的特点2.1.1 不可靠性2.1.2 无连接&#xff08;不是缺点&#xff09;2.1.3 面向数据报&#xff08;优点&#xff09;2.1.4 缓冲区2.1.5 大小受限2.2 UDP协议端格式2.3 关于校验和2.4 基于UDP的应用层协议三、UDP总结&#xff…

P2279 [HNOI2003]消防局的设立

[HNOI2003]消防局的设立题目描述2020 年&#xff0c;人类在火星上建立了一个庞大的基地群&#xff0c;总共有 n 个基地。起初为了节约材料&#xff0c;人类只修建了 n-1 条道路来连接这些基地&#xff0c;并且每两个基地都能够通过道路到达&#xff0c;所以所有的基地形成了一个…

HTML5本地存储详解

html5 本地存储。前言一、localStorage 对象二、sessionStorage 对象三、localstorage 与 cookie 的区别四、localStorage 和 sessionStorage 二者的区别总结前言 ☀️本地存储是指在客户端存储数据&#xff0c;HTML5 为我们提供了两种 API&#xff0c;分别是 localStorage 与 …

算法是如何炼成的?

一、算 法 简 史算法可以追溯到古代埃及人和古希腊人使用的算术方法。在古代埃及&#xff0c;人们使用简单的加减法来解决基本的数学问题&#xff0c;而在古希腊&#xff0c;人们开始使用更加复杂的算术方法&#xff0c;比如平方、立方、平方根和立方根。随着数学的发展&#x…

css元素转换(旋转函数、rotateX 和 rotateY 的使用、移动函数、缩放函数、过渡、动画)详解

文章目录旋转函数rotateX 和 rotateY 的使用移动函数缩放函数过渡transition-timing-function 属性动画旋转函数 在 CSS3 中&#xff0c;使用 rotate 函数能够让指定的元素对象绕原点旋转&#xff0c;主要在二维空间内进行操作。 其语法格式如下所示&#xff1a; transform: …

【C++常用算法】STL基础语法学习 | 查找算法

目录 ●find ●find_if ●adjacent_find ●binary_ search ●count ●count_if ●find 1.功能描述&#xff1a; 查找指定元素&#xff0c;如果找到则放回指定元素的迭代器&#xff0c;若未找到则返回结束迭代器。 2.查看find定义下底层代码的函数原型&#xff1a; 3.…

Day849.ThreadLocal线程本地存储模式 -Java 性能调优实战

ThreadLocal线程本地存储模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于ThreadLocal线程本地存储模式的内容。 民国年间某山东省主席参加某大学校庆演讲&#xff0c;在篮球场看到十来个人穿着裤衩抢一个球&#xff0c;观之实在不雅&#xff0c;于是怒斥学校的…

用于安全医疗保健系统的基于机器学习的可伸缩区块链架构

文章目录背景相关技术简介区块链扩张性电子病历数据安全安全医疗保健的架构基于可扩展区块链架构的机器学习概述基于可扩展区块链架构的机器学习工作流程小结摘要从3.0到4.0的工业革命已经改变了医疗保健环境。患者电子健康记录(EHR)与医学研究机构共享&#xff0c;用于临床研究…

12月榜单丨B站UP主排行榜(飞瓜数据B站)发布!

飞瓜轻数发布2022年12月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜…