考验大家指针功底的时候到了:请问如何理解 (int*)1 + 1 ?

news/2024/5/19 23:12:59/

 来,猜猜看,这里的执行结果是什么?

这是今天课上的一道理解题,给大家一点点思考时间。

(心里有答案了再往下滑哦) 

5

4

3

2

1

.

答案是报warning!因为%d不是用来输出指针的哈哈哈 

不过如果忽略warning呢?

那么最终答案是:5 

为什么是 5?

1 + 1 = 5?

哈哈别急,让我们来进行一些简单的实验。

#include<stdio.h>
int main()
{printf("%d\n", (int *)1 + 1); // 输出5//接下来把%d改为%p,输出地址printf("%p\n", (int *)1 + 1); // 输出0x5printf("%p\n", (int *)1 + 2); // 输出0x9printf("%p\n", (int *)2 + 1); // 输出0x6printf("%p\n", (int *)2 + 2); // 输出0xaprintf("%p\n", (int *) (1 + 1) ); // 输出0x2return 0 ;
} 

多实验几次就会明显发现,

第一个数每+1地址增加1,

第二个数每+1地址就增加4,

而(int*)(1+1) 也就是(int*)2,指向的就是地址2,

所以,系统应该是先执行(int*)1,将指针指向地址1,然后再执行+1,使指针指向当前地址的下一个位置,因为int占4个字节所以指针每次跳4个,所以最终指向1+4,也就是地址5的位置。

(如果将int改为其他类型也是同样:)

#include<stdio.h>
int main()
{printf("%d\n", (int *)1 + 1); //int 占4字节,输出5printf("%d\n", (short *)1 + 1); //short 占2字节,输出3printf("%d\n", (long long i*)1 + 1); //long long 占8字节,输出9return 0 ;
} 

 

以上是我的个人理解,欢迎大佬们前来赐教~

 


http://www.ppmy.cn/news/47133.html

相关文章

String a = new String(“abc“); 创建了几个对象?String a = “abc“; 呢?

String a new String(“abc”); 创建了几个对象&#xff1f;String a “abc”; 呢&#xff1f; 答案&#xff1a;String a new String(“abc”); 创建了1个或2个对象&#xff1b;String a “abc”; 创建了0个或1个都对象 String a new String(“abc”); 创建过程 首先在…

Java基础(十六):String的常用API

Java基础系列文章 Java基础(一)&#xff1a;语言概述 Java基础(二)&#xff1a;原码、反码、补码及进制之间的运算 Java基础(三)&#xff1a;数据类型与进制 Java基础(四)&#xff1a;逻辑运算符和位运算符 Java基础(五)&#xff1a;流程控制语句 Java基础(六)&#xff1…

【Zblog建站】搭建属于自己的博客网站,并内网穿透实现公网访问

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

小鹏开启架构造车,冲击年销300万台入场券

作者 | 张祥威 编辑 | 德新 2023上海车展开始前&#xff0c;小鹏汽车发布了新一代技术架构SPEA 2.0扶摇。 扶摇是一次重要转向。基于这一新架构&#xff0c;小鹏的整车综合研发成本可以降低50%&#xff0c;接下来将有10多款新车密集投放。 大众进入电动化时代后&#xf…

无线洗地机哪款性价比高?高性价比的洗地机分享

虽说现在市面上清洁工具很多&#xff0c;但是要说清洁效果最好的&#xff0c;肯定非洗地机莫属。它集合了吸&#xff0c;洗&#xff0c;拖三大功能&#xff0c;干湿垃圾一次清理&#xff0c;还能根据地面的脏污程度进行清洁&#xff0c;达到极致的清洁效果&#xff0c;省时省力…

东北大学|材料科学基础名词解释|第三章 界面|第四章强化和增韧|第五章材料的变形和断裂

目录 第三章 界面 第四章强化和增韧 第五章材料的变形和断裂 第三章 界面 1、晶界&#xff1a;晶体内点阵相同而取向不同的两个晶粒之间的相邻边界。 2、亚晶界&#xff1a;晶体内点阵相同而取向不同的两个亚晶粒之间的相邻边界。小角度晶界的一种&#xff0c;位相差小于3…

【linux】linux入门级别指令

一些基础指令 前言用户登录新建用户 ls指令pwd命令cd 指令which指令alias指令touch指令mkdir指令rmdir指令 && rm 指令rmdirrm man指令cp指令mv指令catmoreless指令head 指令tail指令输出重定向时间相关的指令cal指令find指令grep指令zip/unzip指令tar指令bc指令uname指…

nginx (uos)

安装nginx apt install nginx php php-fpm -y 切换目录 cd /etc/nginx vim /etc/nginx/conf.d/proxy.conf server { listen 80; ssl_certificate "/etc/nginx/nginx.crt"; ssl_certificate_key "/etc/nginx/nginx.key"; …

java计时器

在 Java中&#xff0c;我们有一个重要的概念&#xff1a;同步和异步。同步就是 Java中的线程安全&#xff0c;异步就是 Java中的线程非安全。 在使用 JVM时&#xff0c;我们一般都是用 start &#xff08;&#xff09;方法启动一个线程&#xff0c;然后设置时间&#xff0c;比如…

ES6()

一、Iterator和for...of循环 1.Iterator遍历器 一是为各种数据结构&#xff0c;提供一个统一的、简便的访问接口二是使得数据结构的成员能够按某种次序排列Iterator 接口主要供for...of消费 目前知道四种数据集合&#xff08;Array、Object、Map、Set&#xff09; 使用方式&am…

Vue.js条件渲染指令v-if及v-show

目录 一、v-if 二、v-show 三、v-if与v-show的选择 一、v-if v-if是Vue.js的条件语句&#xff0c;v-if指令用于条件性地渲染一块内容&#xff0c;这块内容只会在指令的表达式返回true的时候被渲染。需要特别注意的是&#xff0c;v-if所关联的是Vue.js的动态变量。 v-if的使用…

leetcode34. 在排序数组中查找元素的第一个和最后一个位置

给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&#xff1a…

【C进阶】详解预处理指令

文章目录 预定义符号#define#define定义标识符#define定义宏#define替换规则#和##带副作用的宏参数宏和函数对比#undef命令行定义 条件编译文件包含头文件被包含的方式嵌套文件包含 其他预处理指令总结 预定义符号 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DA…

《Netty》从零开始学netty源码(三十八)之PoolSubPage

PoolSubPage 上一节中我们提到了PooledByteBufAllocator类&#xff0c;先看下netty中有关内存的类关系&#xff1a; 从图中可以看到PoolSubPage为最小单位&#xff0c;所以我们先从最小的开始分析&#xff0c;先看下它的属性值&#xff1a; 为了更好的理解这些属性的意义&…

【CSS】鼠标移动到元素上方显示 / 移出盒子范围隐藏案例 ( 子绝父相 | 显示隐藏元素对象 | 鼠标经过样式设置 | 半透明遮罩设置 )

文章目录 一、鼠标移动到元素上方显示 / 移出盒子范围隐藏案例要点分析1、子绝父相2、显示隐藏元素对象3、鼠标经过样式设置4、半透明遮罩设置 二、代码示例 一、鼠标移动到元素上方显示 / 移出盒子范围隐藏案例要点分析 1、子绝父相 这里要 在一个 div 盒子上方套一层遮罩 , 遮…

电脑录屏按哪个键?您可以这样操作!

案例&#xff1a;电脑按哪3个键&#xff0c;可以录屏&#xff1f; 【我平常喜欢使用快捷键在电脑上快速完成一些操作。最近接触到了电脑录屏&#xff0c;感觉使用它一系列的操作比较麻烦。想在这里问问小伙伴们&#xff0c;有没有使用快捷键成功操作过的朋友&#xff01;】 电…

软件工程概述

软件工程基础知识点(一) 计算机软件 计算机软件指计算机系统中的程序及其文档 程序是计算任务的处理对象和处理规则的描述 任务&#xff1a;以计算机为处理工具的任务都是计算任务处理对象&#xff1a;数据(如数据、文字、图形、图像、声音等&#xff0c;他们都是表示&#…

PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable论文学习

一、大纲内容 二、详细内容 Abstract ○ 对话生成模型可以用于闲聊、知识对话、对话问题生成 ○ 本文 ■ 构建了一个灵活的attention机制&#xff0c;充分的促进了单向和双向的语言生成模型 ■ 介绍了一个离散的潜变量&#xff0c;较好的解决了一问多答的问题 ■ 上述两个结构…

Jenkins 实现自动化部署

安装 windows下安装&#xff1a;https://blog.csdn.net/u014641168/article/details/130286547 linux下安装&#xff1a;https://blog.csdn.net/u014641168/article/details/130282439 Jenkins支持JDK1.8对应版本说明&#xff1a;https://blog.csdn.net/u014641168/article/…

OpenCV实例(一)人脸检测

OpenCV实例&#xff08;一&#xff09;人脸检测 1.人脸检测和识别概述2.使用OpenCV进行人脸检测2.1静态图像中的人脸检测2.2视频中的人脸检测 作者&#xff1a;Xiou 1.人脸检测和识别概述 计算机视觉使很多任务成为现实&#xff0c;其中两项任务就是人脸检测&#xff08;在图…