笔试题讲解(C语言进阶)

目录

前言

1、题目

2、答案

3、解析

结语


前言

        “纸上得来终觉浅,绝知此事要躬行”。本篇通过对指针实际案例的分析,由浅入深,来加强我们对指针的理解。

1、题目

        这是一道难题,小心哦。

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

       这里先附上操作符优先级,这个是要记住的:

        请通过自己的方法解出此题,后面公布答案,对比一下。

2、答案

        

        答案为:POINT        ER        ST        EW

        此题很难,涉及到很多细节上的知识点,如果能够搞懂的话,说明你对指针的了解已经到了一定高的境界。下面看解析。

3、解析

        上面是cpp   cp   c 之间的关系。

        对于  **++cpp;先对cpp+1指向下一个地址也就是cp中的第二个元素:c+2。然后对其经行两次解引用,第一次解引用得到c+2,第二次解引用得到c+2的指向的内容(c的第三个元素)POINT,于是打印出“POINT”。计算完后,现在的三个指针的情况如下:

        对于  *-- * ++cpp + 3; 先运算++cpp,因为在上面进行了一次++cpp运算,这是第二次++cpp,所以指向cp第三个元素c+1,然后解引用得到cp[2],此时再运算--,得到指向c的指针,并存放到cp[2]里面,cp[2]变成了指向c的指针。再解引用得到c,c指向"ENTER",c+3指向"ER",因此打印出来为"ER"。此次输出完成,三个指针情况如下:

        下面输出:*cpp[-2]+3;  首先cpp和[-2]结合,得到cp第一个元素,也就是c+3,然后解引用c+3得到指向"FIRST"的指针,再+3得到指向"ST"的指针,最后输出为"SE"。这次运算没有改变三个指针的指向。现在三个指针还是如下:

        最后分析:cpp[-1][-1] + 1;首先cpp[-1]结合得到c+2。然后再和[-1]结合得到c+1指向的内容"NEW"。最后,+1,指向"EW"。输出为"EW"。

结语

        本题讲解完毕,此题值得我们去细细琢磨,在这样的练习中提升我们对指针的理解。

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

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

相关文章

值类型:左值、纯右值、将亡值

值类型是一个古老的概念&#xff0c;早在C98就存在了&#xff0c;但在C11之前这些都无关紧要&#xff0c;随着C11右值引用的产生值类型也被赋予了新的含义。 但问题是C11并未给出清晰的定义&#xff0c;比如在C11的标准文档中&#xff0c;左值的概念只有一句话&#xff1a;“指…

使用向量数据库pinecone构建应用02:检索增强生成RAG

Building Applications with Vector Databases 下面是这门课的学习笔记&#xff1a;https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…

Vue单文件学习项目综合案例Demo,黑马vue教程

文章目录 前言一、小黑记事本二、购物车三、小黑记账清单 前言 bilibili视频地址 一、小黑记事本 效果图 主代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible&…

Open CASCADE学习|绘制砂轮

今天绘制一个砂轮&#xff0c;其轮廓由两条直线段和两段圆弧构成&#xff0c;圆弧分别与直线相切&#xff0c;两条圆弧之间相交而非相切。建模思路是&#xff1a;先给定两条直线段的起始点及长度&#xff0c;画出直线段&#xff0c;然后给定其中一圆弧的半径及圆心角&#xff0…

4核8G服务器能承受多少并发?

腾讯云4核8G服务器能承受多少并发&#xff1f;阿腾云的4核8G服务器可以支持20个访客同时访问&#xff0c;关于4核8G服务器承载量并发数qps计算测评&#xff0c;云服务器上运行程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#x…

Python世界之开端

目录 一、基础语法 1.交互式编程 2.脚本式编程 3.标识符 4.同一行显示多条语句 5.保留字符 6.行和缩进 7.错误提醒 8.多行语句 9.引号 10.注释 11.空行 12.print 输出 13.代码组 二、变量类型 1.标准数据类型 2.数字 3.字符串 1.字符串运算符 2.转义字符 …

Nginx网络服务

一、Nginx概述 1.1Nginx介绍 Nginx&#xff1a; 一款高新能、轻量级Web服务软件稳定性高系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30 000&#xff5e;50 000个并发请求。 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部…

【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【Linux】用户与用户组,用户账号系统文件

目录 一 用户与用户组 1.1 含义 1.2 用户相关语法 1.2.1 useradd&#xff08;添加用户账号&#xff09; 1.2.2 userdel&#xff08;删除用户账号&#xff09; 1.2.3 usermod&#xff08;修改用户账号&#xff09; 1.2.4 passwd(用户口令的管理&#xff09; 1.2.5 su&am…

Git面试题整理(对比)

1.拉取请求pull和分支branch有什么区别 拉取请求(Pull Request) 定义:拉取请求是在代码协作平台上发起的一种通知&#xff0c;它告诉其他团队成员:“我完成了一段代码的工作&#xff0c;请审查并合并到主分支中去”。它不仅是请求合并代码的方式&#xff0c;也是代码审查、讨论…

使用Lombok @Data 出现java: 找不到符号 的问题

第一种&#xff1a;pom依赖最好如下方式 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope> </dependency>第二种&#xff1…

【Azure 架构师学习笔记】- Azure Databricks (10) -- UC 使用

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (9) – UC权限 在前面的文章&#xff1a;【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog中演示了如何配置一个UC。 本文…

excel数据导入到数据库的方法

背景&#xff1a;最近在做和HW对接的某项目&#xff0c;需要将第三方接口提供的数据进行展示&#xff1b;在对方提供了详细的excel后&#xff0c;觉得也挺简单的就是将excel数据导入到数据库中。 方案一&#xff1a; 普通的初学者肯定会想&#xff0c;那我读取excel数据&…

人工智能的理解

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种模拟人类智能思维过程的计算机系统。它通过模仿、学习和应用人类的思维方式和行为模式来完成各种任务&#xff0c;包括但不限于感知、推理、学习、规划、决策等。人工智能的发展已经取得了巨大的进…

UE5 骨骼重定向

1.通过 VRoidStudio 1.26.0 软件创建模型 导出 2.下载ue插件 https://github.com/ruyo/VRM4U/releases 安装 重启 3.拖入创建的模型 到指定文件夹 4.为模型创建 IK绑定&#xff0c;重定向骨骼根 新增链条 5.创建IK 重定向&#xff0c;指定源 和 目标 IK绑定 6.

【More Effective C++】条款6:区分前置++和后置++

前置&#xff1a;返回引用原因&#xff1a; 保证和内建类型一致&#xff0c;i&#xff0c;是合法的 后置&#xff1a;返回一个const值的原因 避免连加操作&#xff0c;因为i是不合法的&#xff0c;和内建类型不一致&#xff1b;避免混淆&#xff0c;因为第二个是对第一个返回…

基于MPPT最大功率跟踪算法的涡轮机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪算法的涡轮机控制系统simulink建模与仿真.mppt采用爬山法实现&#xff0c;仿真输出MPPT控制效果&#xff0c;功率&#xff0c;转速等。 2.系统仿真结果 …

Thymeleaf无法显示模板视图,加载页面显示404状态问题的解决方法

本篇文章主要讲解&#xff1a;Thymeleaf无法显示模板视图&#xff0c;加载页面显示404状态问题的解决方法 日期&#xff1a;2024年2月23日 作者&#xff1a;任聪聪 现象说明&#xff1a; 1.只返回输出模板的名称&#xff0c;如图&#xff1a; 2.显示报错信息&#xff1a; Whi…

左右互博。

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 讨厌鬼在和小甜妹在玩石头游戏。 游戏一开始有 nnn 堆石子&#xff0c;第 iii 堆石子&#xff0c;有 aia_iai​ 个石子。两人轮流进行游戏。 轮到某个人时&#xff0c;这个人先选数量为 x(x&…

64-JQuery动画

1.隐藏正在显示的元素.hide(速度,函数) 显示正在隐藏的元素.show(速度,函数) 元素可见切换为隐藏,元素隐藏切换为可见.toggle(速度,函数) 速度单位是毫秒 <script>$("button").eq(0).click(function(){//隐藏$("div").hide();})$("butt…