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

「题解」日常遇到指针面试题

 

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数C初学者入门训练,题解C,C的使用文章

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 

int main()
{int a[4]={1,2,3,4};int* ptr=(int*)(&a+1);int* ptr1=(int*)((long)a+1);printf("%d %d\n",ptr[-1],*ptr1);return 0;
}

int* ptr=(int*)(&a+1);

&a是整个数组的地址,&a跳过整个数组,(int*)(&a+1)转化为数组元素的地址,ptr[-1]就是*(p-1),表示就是a[3]==4。

  int* ptr1=(int*)((long)a+1);

a是数组首元素的地址,(long)a+1将数组首元素地址转化为整形,然后地址数值+1,看一下内存怎样存储数组

 

所以* ptr1的值为0x02000000,十进制就为33554432

#include<stdio.h>
int main()
{int a[5][5];int (*p)[4];p=a;printf("%p %d\n",&p[4][2]-&a[4][2],&p[4][2]-&a[4][2]);return 0;
}

 这里p是数组指针,它的类型是int(*)[4],与a的类型不匹配,所以看一下内存分布情况

 所以&p[4][2]-&a[4][2]地址相减等于-4,整形打印就是-4

-4的原码:10000000000000000000000000000100

        原码:1111111111111111111111111111111111111111011

        补码:1111111111111111111111111111111111111111100

&p[4][2]-&a[4][2]地址打印就是1111111111111111111111111111111111111111100(0xfffffffffffffffc)

#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);//(**(cpp-2)+3)printf("%s\n",cpp[-1][-1]+1);printf("%s\n",**cpp);return 0;
}

首先我们得把c,cp,cpp对应的关系梳理出来

c[0]c[1]c[2]c[3]
ENTERNEWPOINTFIRST
cp[0]cp[1]cp[2]cp[3]
&c[3]&c[2]&c[1]&c[0]
cpp
&cp[0]

printf("%s\n",**++cpp):
++cpp就是cp[1]的地址,*++cpp这样解引用就是c[2]的地址,再解引用就是“POINT:
printf("%s\n",*--* ++cpp +3):
++cpp就是cp[2]的地址,* ++cpp得到的是c[1]的地址,--* ++cpp得到的是c[0]的地址,*--* ++cpp这样解引用就是“ENTER”,*--* ++cpp +3就是“ER”。
printf("%s\n",*cpp[-2]+3):
**(cpp-2)+3,cpp就是cp[2]的地址,cpp-2就是cp[0]的地址,**(cpp-2)就是“FIRST”,**(cpp-2)+3就是“ST”
 printf("%s\n",cpp[-1][-1]+1):
*(*(cpp-1)-1)+1,cpp是cp[2]的地址,cpp-1就是cp[1]的地址,*(cpp-1)就是c[2]的地址,*(cpp-1)-1就是c[1]的地址,*(*(cpp-1)-1)就是“NEW”,*(*(cpp-1)-1)+1为“EW”

 

   🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸  

相关文章:

「题解」日常遇到指针面试题

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1…...

实习生JAVA知识总结目录

一.JAVA基础学习 JAVA知识点全面总结1&#xff1a;零散知识 JAVA知识点全面总结2&#xff1a;面向对象 JAVA知识点全面总结3&#xff1a;String类的学习 JAVA知识点全面总结4&#xff1a;异常类学习 JAVA知识点全面总结5&#xff1a;IO流的学习 JAVA知识点全面总结6&…...

GMPC认证有哪些内容?

【GMPC认证有哪些内容?】GMP(GMP Good Manufacturing Practice)即良好生产规范&#xff0c;最早是美国国会为了规范药品生产而于1963年颁布的。这也是世界上第一部GMP。由于GMP在规范药品的生产&#xff0c;提高药品的质量&#xff0c;保证药品的安全方面效果非常明显&#xf…...

D2-Net: A Trainable CNN for Joint Description and Detection of Local Features精读

开源代码&#xff1a;D2-Net 1 摘要 在这项工作中&#xff0c;我们解决了在困难的成像条件下寻找可靠的像素级对应的问题。我们提出了一种由单一卷积神经网络发挥双重作用的方法&#xff1a;它同时是一个密集的特征描述符和一个特征检测器。通过将检测推迟到后期阶段&#xf…...

Java基础面试题

目录 一&#xff0c;Java基础 1.1.JDK和JRE有什么区别&#xff1f; 1.2.JAVA中的几种基本类型&#xff0c;各占用多少字节&#xff1f; 1.3.和equals的区别是什么&#xff1f; 1.4.final,finally,finalied有什么区别? 1.15.Java 中操作字符串都有哪些类&#xff1f;它们…...

SQL和MongoDB对比

关系型数据库如MySQL和非关系型数据库MongoDB的对应关系&#xff1a;SQLMongoDBdatabasedatabasetablecollectionrowdocument or Bson documentcolumnfieldindexindextable joins$lookupprimary keyprimary key指定任何唯一的列或列组合作为主键主键会自动设置为_id字段aggrega…...

研究链表空间销毁问题

&#x1f4af;&#x1f4af;&#x1f4af; 1.研究链表空间销毁问题 当链表使用完后&#xff0c;需要将链表销毁&#xff0c;那么该如何销毁呢&#xff1f; void SLTDestroy(SLTNode* phead)//销毁单链表 {SLTNode* cur phead;while(cur){free(cur);cur cur->next;} }你…...

Linux面试总结

一.常用命令1.目录切换cd / 切换到根目录cd ../ 切换到上级目录cd ~ 切换到home目录2.查看目录ls 列出当前目录下所有的文件ls [路径]ls / 查看根目录 ls -l 相当于 ll 最常用的命令,用了表的方式列出当前目录的内容3.查看当前目录pwd-4.创建一组空文件touch5.显示文件内容cat6…...

anaconda的linux版本以及jupyter的安装和DataSpell连接linux的jupyter服务器

anaconda安装&#xff1a;官网&#xff1a;https://www.anaconda.com/拷贝下载网址后&#xff0c;在Linux里进行下载&#xff1a;wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh执行sh&#xff1a;./Anaconda3-2022.10-Linux-x86_64.sh 安装完后&a…...

Zookeeper集群和Hadoop集群安装(保姆级教程)

1. HA HA&#xff08;Heigh Available&#xff09;高可用 解决单点故障&#xff0c;保证企业服务 7*24 小时不宕机单点故障&#xff1a;某个节点宕机导致整个集群的宕机 Hadoop 的 HA NameNode 存在单点故障的可能&#xff0c;需要配置 HA 解决引入第二个 NameNode 作为备份同…...

利用matlab的newff构建BP神经网络来实现数据的逼近和拟合

假设P是原始数据向量&#xff1b; T是对应的目标向量&#xff1b; 现在需要通过神经网络来实现P->T的非线性映射。 net newff(minmax(P),[16,1],{tansig,purelin},trainlm); net.trainParam.epochs 2000; net.trainParam.goal 1e-5; net init(net); net train(n…...

【经验分享】电路板上电就挂?新手工程师该怎么检查PCB?

小伙伴们有没有经历过辛辛苦苦&#xff0c;加班加点设计的PCB&#xff0c;终于搞定下单制板。接下来焦急并且忐忑地等待PCB板到货&#xff0c;焊接&#xff0c;验证&#xff0c;一上电&#xff0c;结果直接挂了... 连忙赶紧排查&#xff0c;找问题。最终发现&#xff0c;是打过…...

运筹系列68:TSP问题Held-Karp下界的julia实现

1. 介绍 Held-Karp下界基于1tree下界&#xff0c;但是增加了点权重&#xff0c;如下图 通过梯度下降的方法找到最优的π\piπ。 这里用到的1tree有下面几种&#xff1a; 全部点用来生成最小生成树&#xff0c;再加上所有叶子结点第二短的边中数值最大的那个任意选一个点&…...

神经影像信号处理总成(EEG、SEEG、MRI、CT)

目录一. EEG(脑电图)1.1 脑波1.2 伪迹1.2.1 眼动伪迹1.2.2 肌电伪迹1.2.3 运动伪迹1.2.4 心电伪迹1.2.5 血管波伪迹1.2.6 50Hz和静电干扰1.3 伪迹去除方法1.3.1 避免伪迹产生法1.3.2 直接移除法1.3.3 伪迹消除法二. SEEG(立体脑电图)三. CT&#xff08;计算机断层扫描&#xff…...

ZooKeeper 进阶:基本介绍

zppkeeper是什么 zookeeper是一个高性能、开源的分布式应用协调服务&#xff0c;它提供了简单原始的功能&#xff0c;分布式应用可以基于它实现更高级的服务&#xff0c;比如实现同步(分布式锁)、配置管理、集群管理。它被设计为易于编程&#xff0c;使用文件系统目录树作为数…...

CSS的常用元素属性,显示模式,盒模型,弹性布局

目录 1.常用元素属性 1.1字体属性 设置字体 设置大小 字体粗细 文字样式 1.2文本属性 文字颜色 文字对齐 ​编辑文本装饰 文本缩进 ​编辑行高 ​编辑1.3背景属性 背景颜色 背景位置 背景尺寸 1.4圆角矩形 2.元素的显示模式 2.1块级元素(display:block) 2.…...

【20230308】串口接收数据分包问题处理(Linux)

1 问题背景 一包数据可能由于某些传输原因&#xff0c;经常出现一包数据分成几包的情况。 2 解决方法 2.1 通过设定最小读取字符和读取超时时间 可以使用termios结构体来控制终端设备的输入输出。可以通过VTIME和VMIN的值结合起来共同控制对输入的读取。此外&#xff0c;两…...

数据库复试问题总结

数据库复试问题 由《数据库系统概论(第5版)》总结而来&#xff0c;用于本人研究生复试准备。也欢迎各位准研究生们学习使用。 文章目录数据库复试问题1、三级模式结构及二级映射有什么优点&#xff1f;2、关系模型中的完整性约束是哪几类&#xff1f;3、SQL的特点&#xff1f;…...

Linux操作系统安装——服务控制

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

【C语言】编译+链接

一、程序的翻译环境和执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码。详解编译链接翻译环境1.组成一个程序的每个源文件通过…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...