关于指针运算的一道题

2023-11-13

目录

刚看到这道题的时候我也和大多数小白一样感到无从下手,但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解。所以我就想着趁热打铁,写一篇博客来记录一下我的想法。

题目如下:

画图:

逐一解答:

题一: 

**++cpp=**(cpp+1)=*(c+2)=POINT的地址

题2:

*--*++cpp+3=*--*(cpp+1)+3=*--*(cp+2)+3=*(--(c+1))+3=*c+3=ENTER地址+3=第二个E的地址

​编辑

第三题:

*cpp[-2]+3=*(cpp-2)+3=*(cp)+3=*(c+3)+3=FIRST的首元素地址+3=S的地址。使用%s进行打印,所以结果是ST。

 第四题:

结语:


刚看到这道题的时候我也和大多数小白一样感到无从下手,但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解。所以我就想着趁热打铁,写一篇博客来记录一下我的想法。

题目如下:

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;
}

画图:

小牛儿本身就是一个天生愚笨的人,所以画图是解决这类问题必不可少的利器。

现在我们根据创建的变量之间的指向关系:
 

char *c[] = {"ENTER","NEW","POINT","FIRST"};
 char**cp[] = {c+3,c+2,c+1,c};
 char***cpp = cp;

来画一下表示两个字符指针数组变量,一个字符指针变量以及四个字符串之间的指向的图:

 

逐一解答:

题一: 

 printf("%s\n", **++cpp);

**++cpp=**(cpp+1)=*(c+2)=POINT的地址

 传入POINT的地址并使用%s打印,说以结果就是POINT。

题2:

 printf("%s\n", *--*++cpp+3);

*--*++cpp+3=*--*(cpp+1)+3=*--*(cp+2)+3=*(--(c+1))+3=*c+3=ENTER地址+3=第二个E的地址

 

 结果用%s打印,所以是ER。

第三题:

 printf("%s\n", *cpp[-2]+3);

*cpp[-2]+3=*(cpp-2)+3=*(cp)+3=*(c+3)+3=FIRST的首元素地址+3=S的地址。使用%s进行打印,所以结果是ST。

 第四题:

 printf("%s\n", cpp[-1][-1]+1);

cpp[-1][-1]=(*(*(cpp-1))-1)+1=(*(c+2-1))+1=(*(c+1))+1=NEW的首元素加一,指向的就是E,

使用%s打印打印的就是EW。

结语:

以上就是我今天分享的全部内容了,希望对大家有所帮助。如果对你有用让你心情变好的话希望你能给我点个赞支持我一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于指针运算的一道题 的相关文章

  • 手机怎么访问服务器未响应,手机设置路由器服务器未响应怎么办

    手机设置路由器服务器未响应怎么办 内容精选 换一换 自定义线路解析 支持DNS根据访问者的IP地址返回特定的IP地址 如果访问者所属Local DNS不支持扩展DNS机制 Extension Mechanisms for DNS EDNS
  • 将数组作为参数进行传递(转)

    有两种传递方法 一种是function int a 另一种是function int a 这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值 对于第一种 根据之前所学 形参是实参的一份拷贝 是局部变量 但是数组是个例外 因为数组的

随机推荐

  • MySQL5.7_空间数据操作

    MySQL5 7 空间数据操作 创建数据库 空间数据库 spatialDB进行测试 USE spatialDB DROP TABLE t point CREATE TABLE t point id int 11 NOT NULL AUTO
  • 论文阅读笔记(四十七):Attention Is All You Need

    Abstract The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that
  • 将python程序文件隐藏源码(windows下转换成.pyd)

    将编写好的Python程序给别人调用 隐藏源码步骤 1 安装Cython库 pip install Cython 2 新建一个转换程序Change py 内容如下 import Cython Build import distutils c
  • 【深入QT】信号槽机制浅析

    一 信号槽的基本概念 关于QT信号槽的基本概念大家都懂 通过信号槽机制 QT使对象间的通信变得非常简单 A对象声明信号 signal B对象实现与之参数相匹配的槽 slot 通过调用connect进行连接 合适的时机A对象使用emit把信号
  • 【PHP代码审计】ThinkPHP代码审计

    目录 0x001 开发方式 0x002 审计流程 1 启用调试开关 2 版本查看 3 定位函数 4 测试是否存在漏洞 5 版本自身漏洞 0x001 开发方式 在审计源码时根据不同的开发方式对应不同的审计方法 自写 有的站点虽然使用了thin
  • 数组对象and字符串对象

    一 数组对象 JavaScript中的数组对象可以使用new Array 或字面量 来创建 在创建以后 就可以调用数组对象提供的一些方法来实现对数组的操作 1 1数组类型检测 数组类型检测有两种常用的方式 分别是使用 instanceof
  • source insight 绿色护眼主题&暗色护眼主题

    效果如下 绿色背景颜色为RGB 195 222 204 主题下载地址 链接 https pan baidu com s 1aSkQOo70nr498hf wHN4Jw 提取码 f3f6 来自百度网盘超级会员V5的分享
  • CollapsingToolbarLayout用法详解(简洁易懂)

    Collapsing翻译过来就是折叠的意思 CollapsingToolbarLayout 顾名思义就是可折叠的toolbar布局 先看一下使用它的效果 可以看到有这样几个效果 1 背景图片渐渐消失变为主题颜色 2 FloatingActi
  • stata学习笔记

    如何认识数据 S1 打开数据 首先 打开stata 你会看到这样的一个界面 面对全英文的界面 需要知道每一块位置代表着什么 方便以后的操作 中下 Command 命令窗口 你可以在此窗口输入想要执行的stata命令 左上 Review 历史
  • 我的第一个Spring程序

    转自 我的第一个Spring程序 下文是笔者创建第一个Spring示例的方法分享 如下所示 步骤一 使用Eclispe创建一个Java项目 在 Eclipse 中创建一个简单的 Java 项目 依次单击 File gt New gt Jav
  • Python:运营自媒体,如何修改图片的MD5值

    目录 前言 获取所有图片 更改图片MD5值 生成exe可执行文件操作 主界面 线程代码 进度条代码 前言 在我们运营自媒体的时候 或多或少会用到别人的图片 但是某些自媒体平台会判断图片的MD5 如果MD5相同 会认为你抄袭 默认会降低你的权
  • 静态链接与动态链接

    文章目录 静态链接 动态链接 说起静态链接和动态链接 大家肯定都不陌生 静态链接与动态链接的差别顾名思义 动态链接使动态库中的函数在程序运行后 才被用到 而静态链接则在运行前 就将所需函数合并了 我们来看看两者在 Linux 下的定义 静态
  • 单片机毕设 基于物联网的智能衣柜系统设计

    文章目录 1 简介 2 绪论 2 1 课题背景与目的 3 系统设计 3 1 硬件系部分 3 2 软件部分 3 1 系统架构 3 2 硬件设计 3 3 软件设计 主程序介绍 按键扫描程序设计流程 DHT11 读取程序流程图 LCD12864
  • 使用python搭建一个简易的Web服务

    介绍 简单的说 web服务器就是机器上监听了本地的IP和端口的一个进程 当有客户的请求进来时 它会响应客户的请求并返回相应的信息 客户端和服务端之间的通信基于HTTP协议 客户端可以是浏览器或者任何支持HTTP的应用 我们平时访问网页或手机
  • 2021-06-29 ffmpeg临时记录

    我们将 H264 和 AAC 码流存储为MP4文件的时候 就需要在 MP4文件中增加两个流通道 一个存储Video H264 一个存储Audio AAC 假设H264和AAC只包含单个流通道 avformat new stream 即在 A
  • 21. 实战:多线程+xpath抓取大量菜价信息(四种方法)

    目录 前言 目的 思路 代码实现 多线程 xpath 1 抓取单个页面 2 创建线程池 3 保存到文件 运行效果 完整代码 举一反三 多进程 xpath 多线程 bs4 多进程 bs4 总结 前言 我们学习了多线程 多进程对于提高效率的方法
  • Qt 的一些心得(背景设置,圆角,半透明)

    一 背景刷成黑色 前景色设为白色 方法一 paltette方式 经测试 该方法不会影响到其他控件 推荐使用 QPalette bgpal palette bgpal setColor QPalette Background QColor 0
  • SpringBoot课程笔记

    黑马程序员SpringBoot2课程笔记 一 基础篇 略 二 运维实用篇 1 SpringBoot运行与部署 略 2 SpringBoot配置 2 1 临时属性配置 可以在启动Boot程序时添加临时属性改变配置 2 1 1 属性加载优先级
  • java 静态类的实例_java中类的静态成员和实例成员

    一 基本介绍 java中的静态成员包括静态方法和静态成员变量 静态成员都是由static修饰的 java中的实例成员包括实例方法和实例成员变量 实例成员都没有被static修饰 二 使用语法 关于使用静态成员和实例成员的具体语法规则如下 p
  • 关于指针运算的一道题

    目录 刚看到这道题的时候我也和大多数小白一样感到无从下手 但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解 所以我就想着趁热打铁 写一篇博客来记录一下我的想法 题目如下 画图 逐一解答 题一 cpp cpp 1 c 2 POINT