当前位置: 首页 > news >正文

领略指针之妙

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

👑💎💎👑💎💎👑 
💎💎💎自💎💎💎
💎💎💎信💎💎💎
👑💎💎 💎💎👑    希望在看完我的此篇博客后可以对你有帮助哟

👑👑💎💎💎👑👑   此外,希望各位大佬们在看完后,可以互赞互关一下,看到必回
👑👑👑💎👑👑👑


 想必各位老铁们也知道,C语言的灵魂就在于指针,他很神奇,就像一把神奇的钥匙,可以打开指定的房间。有了这个精确的地址,我们也就不用再怕迷路了,哈哈哈。

OK,话不多说,接下来给各位老铁们看个神奇的代码,没错,就是此时屏幕前的你,顺便看看自己是否对指针轻松拿捏,不过话说在前面,下面这个代码要是对指针没有一定的功力再结合“码图”(也就是画图),可不是件容易的事

 题目:
#include<stdio.h>
int main()
{char* c[] = { "ENTER","NEW","POINT","FIRST" };char** cp[] = { c + 3,c + 2,c + 1,c };char*** cpp = cp;printf("%s\n",**++cpp );printf("%s\n", *--* ++cpp +3);printf("%s\n", *cpp[-2]+3);printf("%s\n",cpp[-1][-1]+1 );return 0;
}

 

 各位老铁们咱也就动起来吧,看看自己咋样

 分析:
1)初始状态对应的草图

 2)**++cpp的分析

1:cpp初始状态是指向数组cp的首元素的地址

2:++cpp注意这是前置加加(也就意味着cpp的指向要改变,同时也会对后面cpp的一系列操作有影响)cpp此时指向cp数组的第二个元素的地址

3:**++cpp 第一次解引用是指向c+2,再一次解引用是指向POINT这个字符串所指向的首元素地址

4:结果:POINT

3)*--* ++cpp +3

草图如下:

1:看到这个表达式可能有些老铁会发懵,不知从何下手(优先级)

 2:++cpp:指向数组cp的第二个元素(cp+2)

3:此时对++cpp进行解引用:指向数组C第二个元素的地址(c+1),再--指向的是数组C第一个元素的地址(c+ 0)对他进行解引用指向ENTER这个字符串首字符地址

4:此时最后指向 +3 的操作:对字符串跳过三个字符指向  E

5:打印结果: ER

4)*cpp[-2]+3

1:*cpp[-2]+3 ==   *(*(cpp - 2)) +3

2:cpp指向数组cp的第二个元素(cp+2)

3:cpp -2指向 cp+0 

4:*(cpp-2)访问的是 c+3

5:*(*(cpp-2)) 访问的是字符串 FIREST指向的第一个字符从地址

6: *(*(cpp - 2)) +3  此时指向 E的地址

7:打印:ST

5) cpp[-1][-1]+1 

 1:cpp[-1][-1]+1  == *(*(cpp-1)-1) +1

2:cpp-1 == cp+2-1 是指向 cp+1 

3:此时解引用是指向 c+2 的地址 ,此时在对这个地址-1,是指向c+1这个地址

4:*(*(cpp-1)-1)此时是的  c+1这个地址进行解引用(指向NEW的首字符地址)

注意:可不是对c+ 2 这个地址解引用(错在:对cpp-1后忘了解引用,就比如说我,嘻嘻嘻)

5: *(*(cpp-1)-1) +1 指向 E这个字符对应的地址

6:打印  :EW

 分析半天是对是错呢,咱让程序跑起来也看一眼:

结果:

结语:

或许这就是编程的魅力,我永远沉迷于此,陶醉其中。希望各位老铁看到我的这篇博客可以对指针有更深的理解,也希望"小白"也能有所收获,不过咱还是有啥说啥,这确实是需要一点点的功力的,没有点底子可能或许稍微吃力,欧克,又到了各位主角的舞台了(咱一波关注,一波赞走起,也是更好激励我的) 

温馨提示:最近天气比较极端,希望各位老铁照顾好自己,生病真的很难受,状态也不在线(我就是扛了一周左右)

相关文章:

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…...

迭代器模式介绍

目录 一、迭代器模式介绍 1.1 迭代器模式定义 1.2 迭代器模式原理 1.2.1 迭代器模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、迭代模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 抽象迭代类 2.2.2 抽象集合类 2.2.3 主题类 2.2.4 具体迭代类 2.2.5 具体集合类 …...

算法每日一题: 最大字符串匹配数目 | 哈希 | 哈希表 | 题意分析

hello 大家好&#xff0c;我是星恒 今天给大家带来的是hash&#xff0c;思路有好几种&#xff0c;需要注意的是这中简单的题目需要仔细看条件&#xff0c;往往他们有对应题目的特殊的解法 题目&#xff1a;leetcode 2744给你一个下标从 0 开始的数组 words &#xff0c;数组中包…...

自然语言处理(Natural Language Processing,NLP)解密

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…...

【DevOps-08-5】目标服务器准备脚本,并基于Harbor的最终部署

一、简要描述 告知目标服务器拉取哪个镜像判断当前服务器是否正在运行容器,停止并删除如果目标服务器已经存在当前镜像,删除当前版本的镜像目标服务器拉取Harbor上的镜像将拉取下来的镜像运行成容器二、准备目标服务器脚本文件 1、在部署的目标服务器准备deploy.sh部署脚本 …...

用Java实现01背包问题 用贪心算法

贪心算法不是解决01背包问题的有效方法&#xff0c;因为贪心算法只能保证得到一个近似最优解&#xff0c;而无法保证得到最优解。因此&#xff0c;我们需要使用动态规划来解决01背包问题。以下是使用Java实现的动态规划解法&#xff1a; public class KnapsackProblem {public…...

JUC并发编程-8锁现象

5. 8锁现象 如何判断锁的是谁&#xff01;锁到底锁的是谁&#xff1f; 锁会锁住&#xff1a;对象、Class 深刻理解我们的锁 问题1 两个同步方法&#xff0c;先执行发短信还是打电话 public class dome01 {public static void main(String[] args) {Phone phone new Phon…...

集美大学“第15届蓝桥杯大赛(软件类)“校内选拔赛 D矩阵选数

经典的状态压缩DP int dp[15][(1<<14)10]; int a[15][15]; void solve() {//dp[i][st]考虑到了第i行 并且当前考虑完第i行以后的选择状态是st的所有方案中的最大值for(int i1;i<13;i)for(int j1;j<13;j)cin>>a[i][j];for(int i1;i<13;i){for(int j0;j<…...

Android System Service系统服务--1

因为工作中经常需要解决一些framework层的问题&#xff0c;而framework层功能一般都是system service 的代理stub&#xff0c;然后封装相关接口&#xff0c;并提供给APP层使用&#xff0c;system service则在不同的进程中运行&#xff0c;这样实现了分层&#xff0c;隔离&#…...

【RT-DETR有效改进】华为 | Ghostnetv1一种专为移动端设计的特征提取网络

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…...

45个经典Linux面试题!赶紧收藏!

问题一&#xff1a; 绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f; 答案&#xff1a;绝对路径&#xff1a;如/etc/init.d当前目录和上层目录&#xff1a;./ …/主目录&#xff1a;~/切换目…...

将字符串中可能被视为正则表达式的特殊字符进行转义re.escape()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将字符串中可能被视为 正则表达式的特殊字符 进行转义 re.escape() [太阳]选择题 请问以下代码最后输出的结果是&#xff1f; import re s [a-z] print("【显示】s ",s) print(&q…...

C语言:函数指针的使用

在C语言中&#xff0c;函数指针是指向函数的指针变量。它可以存储函数的地址&#xff0c;使得可以通过该指针来调用函数。以下是函数指针的基本概念和用法&#xff1a; 一、基本概念&#xff1a; 声明函数指针&#xff1a; returnType (*pointerName)(parameterTypes); 这里 r…...

「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(二)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 在web项目中使用DHTMLX Gantt时&#xff0c;开发人员经常需要满足与UI外观相关的各种需求。因此他们必须确定JavaScript甘特图库的…...

Webpack5入门到原理18:Plugin 原理

Plugin 的作用 通过插件我们可以扩展 webpack&#xff0c;加入自定义的构建行为&#xff0c;使 webpack 可以执行更广泛的任务&#xff0c;拥有更强的构建能力。 Plugin 工作原理 webpack 就像一条生产线&#xff0c;要经过一系列处理流程后才能将源文件转换成输出结果。 这条…...

PWM之舵机

舵机又称直流电机&#xff0c;如下图 本节承接上节&#xff0c;具体的PWM技术已经在上一节讲的很详细了&#xff0c;本节就不再讲了&#xff0c;那么我们的重点就放在直流电机的工作原理上了。 一、工作原理 我们研究直流电机&#xff0c;主要式研究直流电机旋转速度的调节&a…...

Python并发与多线程:IO并发(阻塞IO、非阻塞IO、IO多路复用、异步IO)

在Python中&#xff0c;有多种处理并发的方式&#xff0c;其中之一就是使用多线程进行IO并发操作。在IO操作中&#xff0c;有四种常见的方式&#xff1a;阻塞IO、非阻塞IO、IO多路复用和异步IO。 阻塞IO&#xff08;Blocking IO&#xff09;&#xff1a;当执行一个IO操作时&…...

React16源码: React中的IndeterminateComponent的源码实现

IndeterminateComponent 1 &#xff09;概述 这是一个比较特殊的component的类型&#xff0c; 就是还没有被指定类型的component在一个fibrer被创建的时候&#xff0c;它的tag可能会是 IndeterminateComponent在 packages/react-reconciler/src/ReactFiber.js 中&#xff0c;有…...

SpringBoot:详解Bean生命周期和作用域

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、生命周期二…...

【图解数据结构】顺序表实战指南:手把手教你详细实现(超详细解析)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;图解数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️线性表1.1 &#x1f514;线性表的定义1.2 &#x1f514;线性表的存储结构 二. ⛳️顺序表…...

让ai成为你的vue开发搭档,用快马智能优化代码性能与结构

让AI成为你的Vue开发搭档&#xff0c;用快马智能优化代码性能与结构 最近在开发一个Vue3项目时&#xff0c;遇到了几个性能瓶颈问题。作为一个前端开发者&#xff0c;性能优化是绕不开的话题。幸运的是&#xff0c;借助AI辅助开发工具&#xff0c;这些问题都能得到更高效的解决…...

华为MateBook D14安装Ubuntu16避坑指南:WiFi/蓝牙/触控板驱动一键搞定

华为MateBook D14安装Ubuntu 16.04驱动优化全攻略 华为MateBook D14作为一款高性价比轻薄本&#xff0c;在安装Ubuntu 16.04时可能会遇到WiFi、蓝牙和触控板驱动不兼容的问题。这主要源于硬件迭代速度远超Linux内核更新周期——你的笔记本搭载了新一代无线网卡和输入设备&#…...

当multisim遇见ai助手:快马平台如何智能分析与优化你的电路设计

作为一名电子设计爱好者&#xff0c;最近在InsCode(快马)平台尝试了一个特别有意思的项目——用AI辅助优化Multisim电路设计。整个过程就像有个专业的电子工程师在旁边实时指导&#xff0c;分享下我的实践心得&#xff1a; 直流工作点智能诊断 输入一个简单的晶体管放大电路后&…...

AI小白进阶必看!吴恩达教你用“职业技能包“让AI像专业员工一样工作(收藏版)

本文系统拆解了吴恩达联合Anthropic推出的Agent Skills视频课程&#xff0c;深入浅出地讲解了如何通过构建"职业技能包"&#xff08;Skills&#xff09;&#xff0c;让通用AI Agent在具体业务场景中像专业员工一样可靠工作。文章从Agent Skills的定义、必要性、能力维…...

零基础入门:用eNSP搭建USG5500防火墙IPsec虚拟专用网实验环境

从零构建企业级安全隧道&#xff1a;eNSP模拟USG5500防火墙IPsec实战指南 当你第一次听说"IPsec"这个词时&#xff0c;可能会联想到那些科技电影中黑客们建立的加密通道。实际上&#xff0c;IPsec技术离我们并不遥远——它正默默保护着每天数以亿计的企业数据传输。本…...

如何用Python爬取全国空气质量监测站数据(附完整代码与避坑指南)

Python实战&#xff1a;构建高稳定性的空气质量监测数据爬虫系统 清晨打开天气应用时&#xff0c;那些跳动的PM2.5数值背后&#xff0c;是遍布全国的空气质量监测站在持续工作。作为数据分析师或环境研究者&#xff0c;直接获取这些原始监测数据往往能发现更有价值的规律。但当…...

Dify知识库创建全攻略:从零开始搭建你的AI问答系统(附分段模式详解)

Dify知识库创建全攻略&#xff1a;从零开始搭建你的AI问答系统&#xff08;附分段模式详解&#xff09; 在AI技术快速渗透各行各业的今天&#xff0c;构建专属知识库已成为企业智能化转型的核心基础设施。Dify作为一款开箱即用的AI应用开发平台&#xff0c;其知识库功能尤其适合…...

保姆级教程:ROS1/ROS2下rosbag录制与播放的10个实战技巧(含脚本与launch文件)

ROS1/ROS2高效数据管理&#xff1a;rosbag录制与播放的工程化实践指南 第一次接触rosbag时&#xff0c;我花了整整三天时间才搞明白为什么录制的数据总是无法正常播放。当时在实验室调试移动机器人&#xff0c;每次测试都要重新跑一遍完整流程&#xff0c;效率低得令人抓狂。直…...

突破传统:用Arduino SI4735库打造全频段数字收音机方案

突破传统&#xff1a;用Arduino SI4735库打造全频段数字收音机方案 【免费下载链接】SI4735 SI473X Library for Arduino 项目地址: https://gitcode.com/gh_mirrors/si/SI4735 你是否曾梦想过亲手打造一台能接收全球广播的专业收音机&#xff1f;面对传统模拟电路的复杂…...

SemanticKITTI数据集评测:DarkNet53Seg、PointNet++等模型谁更强?附复现代码

SemanticKITTI点云语义分割实战&#xff1a;模型选型与性能优化指南 点云语义分割技术正在重塑自动驾驶、机器人导航和三维场景理解等领域的研究范式。作为该领域最具挑战性的基准之一&#xff0c;SemanticKITTI数据集凭借其大规模、高密度标注和真实场景多样性&#xff0c;已成…...