C/C++指针笔试题详解

[指针八]有关指针的面试题 有关指针的经典面试题           C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的解析一下指针的有关笔试,面试题.所有题目来源网络,分析是我写的... 0.预备知识,最基础的指针 其实最基础的指针也就应该如下面代码: int a; 阅读详情

个人主页:点我进入主页

专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶

C语言刷题

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂。

目录

 

1.前言   

 2.指针题写出下列程序的结果

 2.1

2.2

2.3

2.4 

2.5

 


 

1.前言   

     在上一篇文章中我给大家讲解了关于指针和数组的笔试题,它主要就是sizeof(数组名),其中数组名是整个数组。&数组名加减整数其中&数组名是整个数组的地址,。即使在sizeof()中也是整个数组的地址对于二维数组,我们可以将二维数组看成一维数组的数组,例如arr[3][4],二维数组的数组名为arr,一维数组的数组名为arr[3],&arr ,arr都是二维数组的地址,但是在sizeof中arr加整数表示第几行的地址,arr[整数] &arr[整数]都表示第几行的地址。详细的可以点击指针和数组详解

 2.指针题写出下列程序的结果

 2.1

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

        我们看数组a是整形的有五个元素,我们对a进行取地址操作然后加1,其中取地址数组名得到的是数组的地址,加1是跳过一个数组,我们可以画成

6dce9dd53d53426fad05639609f4ef8c.png

我们可以理解为ptr最开始指向数组的首元素,取地址数组名加1跳过一个数组得到 

af176631b3934df2b36c03e531da57d2.png

 它指向了数组对后一个元素的后一个地址,我们看故*(ptr-1)就是将ptr前移一个元素,也就是5,*(a+1)中数组名没有单独存在,故是首元素的地址加1得到第二个元素的地址,解引用为第二个元素为2.

2.2

struct Test
{
int Num;
char *pcName;
short sDate;
char cha[2];
short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表表达式的值分别为多少?
//已知,结构体Test类型的变量大小是20个字节
int main()
{
printf("%p\n", p + 0x1);
printf("%p\n", (unsigned long)p + 0x1);
printf("%p\n", (unsigned int*)p + 0x1);
return 0;
}

         我们先看0X1是十六进制的数据是1,指针p值为0x100000加1是跳过一个元素故跳过20个字节得到0x100014,我们将指针p强制转化为unsigned long类型,加1就是单纯的加1得到0x100001,将p强制转化为unsigned int*类型也就是相当于p指向一个整形的元素,加1跳过4个字节得到0x100004。在这道题中我们需要对数据的类型掌握的很熟练。

2.3

int main()
{
int a[4] = { 1, 2, 3, 4 };
int *ptr1 = (int *)(&a + 1);
int *ptr2 = (int *)((int)a + 1);
printf( "%x,%x", ptr1[-1], *ptr2);
return 0;
}

        首先对于ptr1指针他和第一题一样都是得到数组的地址加1跳过一个数组 ,对于ptr1[-1]相当于ptr-1也就是指针向前移动4个字节指向数组的最后一个元素得到0x4,对于ptr2指针我们先看(int)a+1,我们将a强制转化为整形然后加1,也就是数组将数组的首地址转化为整形然后加1,具体我们将初始状态画为

943bd2c744f945c2837dc57aa6ba8976.png

强制转化为整形让后加1在强制转化为int*为 

14e95375dadc49c39386838ca7854b74.png

由于打印时会访问4个字节也就是 

bbbe71bdd89144cba4384afa15462574.png

故得到0x2。

2.4 

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

        这道题非常的有意思,需要我们对数组有很深的认识,仔细看,它是逗号进行运算吗,看似6个元素其实是三个元素,分别为1,3,5;这是一个二维数组,p=a[0],其中a[0]是第一行的地址,对于p[0],相当于a[0][0],也就是1.

2.5

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

        我们可以进行画图为

b5d07c52c0d24c9681c2b8447acac0a1.png

        对于int(*p)[4]是一个数组指针,每个指针含义4个元素,想要将p指向二维数组虽然二维数组每行是占5个元素,我们 也是可以将它放进去对于&a[4][2],具体可以画为

5c2623926be44410bd6e87696effdfeb.png

 地址进行相减为-4,%p对应的为FFFF FFFF FFFF FFFC。

到这里今天的内容就结束了,希望大家可以学到很多东西,最好别忘了一键三连呦.

 

2024年C C++最新【C语言】大厂指针笔试题(1码+1图)详解,聪明人已经收藏了 计算后的最终值是一个元素),所以这里初始化二维数组时(0,1)结果是1(2,3)结果是3(4,5)结果是5最终存入二维数组的只有1,3,5 结果如图。 阅读详情

相关推荐

C C++ 指针 面试题 笔试题

(免费下载,评论还可获得积分)C/C++精典面试题笔试题大全,各方收录,绝对实用。

经典C++笔试题目100例,接近实际,值得一看!

第一部分:C++与C语言的差异(1-18)1、C 和 C++ 中 struct 有什么区别? Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 可以,默认是public 2、C++中的 struct 和 class 有什么区别?【参考答案】从语法上讲,class和struct做类型定义时只有两点区别:...

静下心来做事 13万+

指针习题(C/C++考试复习必备)

指针习题(C/C++考试复习必备),C++语言指针内容很难,精选题目供参考学习

C++笔试题

1. 用预处理指令#define声明一个常数,用以表明1年中有多少秒? #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个标准宏MIN, 这个宏输入两个参数并返回较小的一个 #define MIN(a,b) (a>b?b:a) 3. 用变量a给出下面的定义 1)一个整型数 int a 2)一个指向整型数的指针 int *a 3)一个指向指针的指针,它指向的指针是指向一个整型数 4)...

weixin_45685191的博客 1411

STC89C52RC单片机原理图详解

左侧A0和右侧B0为一 一对应的关系,左上角DIR为控制数据方向端口,如果DIR接高电平是将左侧数据A0~A8送到右侧B0~B8,如果DIR接低电平,是将右侧数据B0~B8送到左侧A0~A8,由于在电路板上LE始终与VCC连接,因此这里。74HC595是串行输入,并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于I/O口扩展。由于数码管为共阴极,给数码管下面接口输入阳码时,LED才亮,但是直接将P0~P7的高电平输入到数码管时,

m0_50562428的博客 6万+

数字IC设计实现之hierarchical flow系列(一)

数字IC设计实现之hierarchical flow系列(一) 最近这段时间小编又比较忙起来了,今天抽空来咖啡厅码字来了,刚到时脑子一片空白,不知道要分享些什么(项目结束后将会在知识星球上分享数字 IC 设计实现 Tapeout 前要review的那些 checklist)。突然间想起来有个星友希望小编分享些数字 IC 设计实现 hierarchical flow 的相关内容。考虑到现在大都采用这种方式来做 design 和实现,那就选这个 topic 了。限于篇幅和时间限制,今天只分享逻辑综合部分和布局布

weixin_37584728的博客 5999

指针笔试题(含大厂题)

笔试题1: #include<stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int* ptr = (int*)(&a + 1);//取地址a,取出整个数组的地址,加一,指向数组后面的地址 printf("%d,%d", *(a + 1), *(ptr - 1)); //*(a+1)数组名a是数组首元素地址,加一是数组第二个元素的地址,解引用是2, //ptr被强转为int*,所以减1,是取出数组第5个元素地址,解引.

weixin_61427900的博客 361

深入解析π型滤波电路:RC与LC滤波器的实战选型指南

本文深入解析了π型滤波电路的工作原理与实战选型。重点对比了RC型与LC型滤波器的核心差异:RC型成本低、体积小,但存在压降与能耗,适用于小电流场景;LC型效率高、滤波性能好,但成本与体积较大,适合中到大电流及高纹波抑制需求。文章提供了基于不同应用场景的选型指南与设计要点,帮助工程师做出精准决策。

weixin_29291069的博客 656

指针笔试题详解(会了你就可以轻松玩转指针)

目录 一、第一阶段 一、笔试题1 二、笔试题2 三、笔试题3 四、笔试题4 五、笔试题5 二、第二阶段 一、笔试题1 二、笔试题2 三、笔试题3 相关图解: 四、笔试题4 五、笔试题5 相关图解: 六、笔试题6 七、笔试题7 八、笔试题8 相关图解: 一、第一阶段 一、笔试题1 首先需要清楚数组名表示什么? 一般情况下数组名表示数组首元素地址 两个特殊情况:数组名单独放在sizeof内部,&数组名,这两种情况表示的是整个数组。 void te

weixin_63246064的博客 888

别再纠结了!实测罗技Flow、对拷线、微软Mouse without Borders,我的最终选择是...

本文通过实测对比罗技Flow、对拷线和微软Mouse without Borders等多设备控制方案,详细分析了各自的优缺点及适用场景。作者最终选择了对拷线与罗技键鼠的组合方案,为专业用户提供了稳定可靠的多设备协同办公解决方案,特别适合需要频繁传输大文件和跨设备操作的用户。

weixin_33696106的博客 408

【实战篇导读】四足机器人运动控制导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人运动运动控制系统及相关算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章主要介绍了波士顿spot机器人的发展历史、四足机器人的硬件系统及电机执行器组成包括硬件系统、关节电机执行器,机载传感器机处理器及电气连接等。概述了四足机器人规划控制、感知、定位及局部地图的相关算法方向。

qq_35635374的博客 679

2.8练习指针篇(sizeof和strlen的对⽐,数组指针练习题目)

因为strlen需要找到/0才能打印,所以第一个答案是随机值,而在sizeof里面的字符串还需要加上字符串后面的\0,就是a,b,c和 /0。由于是x86环境,是32位,对应的是8个十六进制数(一个十六进制是4个二进制数,所以32/4=8)指针的大小取决与计算机平台环境,所以下面的代码我们统一用 4或者是8 表示。a所占内存空间的大小是一个int整形也就是4,所以其实上面的答案结果都是4。节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。计算变量所占内存空间⼤⼩的,单位是字。

2501_93720311的博客 686

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3780

指针进阶硬核解析:数组指针、函数指针、智能指针与空指针排查实战

指针是C/C++语言的核心机制,也是内存管理与底层编程的基石。理解指针变量与寄存器寻址的关系,能帮助开发者从机器指令层面把握间接访问的本质。在多维数组场景中,数组指针与指针数组的区分、二维数组的退化规律,决定了传参和遍历时的正确性。函数指针通过表驱动和回调机制,让代码具备延迟绑定与模块解耦能力,而C++智能指针则通过RAII和所有权语义,系统性地解决裸指针带来的生命周期管理难题。空指针崩溃常源于生命周期不匹配与时序竞态,在定时器和回调场景中尤为高发。掌握指针的底层原理、编码规范与排查工具,能显著提升工程实践

weixin_33563728的博客 265

pytorch实现基本的logistic和softmax回归实验(手动+torch)

前提:不是前馈神经网络,没有隐藏层。 一:Logistic回归实验–人工构造数据集,手动构造模型 要求: 动手从0实现logistic回归,实现二分类,人工构造数据集,并分析loss、训练集、测试集的准确率。(要求从零实现二元交叉熵) 实验过程: 1.1人工构造数据集 1. # #自定义数据---训练集 2. num_inputs = 2 3. n_data = torch.ones(1500, num_inputs) # 数据的基本形态 4. x1 = torch.normal(2 * n_d

qq_37534947的博客 1万+

【STM32实物】基于STM32设计的智能仓储管理系统

近年来,随着我国仓储发展的和药品需求的不断增多,许多医院都采用药物仓储管理系统。我国的药物仓储产业已经有了长足的发展,仓库的规模不断变大,对仓储的要求也不断增高,药物的存储,识别以及对仓储环境条件的要求成为仓储的重要决策,他们可以根据不同的特点在不同场景中使用。本文详细介绍了一个基于单片机技术的智能仓储管理系统的设计与实现,这个系统可谓是集射频识别(RFID)技术和环境监测传感器于一身,旨在提高仓储操作的自动化和精确度。

嵌入式阿齐Archie 1万+

嵌入式C/C++语言笔试题(01)

嵌入式C/C++语言笔试题

Breezekyu的博客 1357

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C/C++ 常见笔试题与陷阱详解

C/C++ 笔试题常见陷阱解析 本文剖析了C/C++笔试中的几个典型陷阱案例:1) (int&)a与(int)a的区别,前者按整型解读浮点数内存,后者进行值转换;2) 构造函数调用次数判定,指针声明不会触发构造;3) 左值函数需返回引用才能赋值;4) cout对char*的特殊处理会输出字符串而非地址;5) 指针交换函数需解引用操作真实值;6) 数组引用语法int (&arr)[N]的合法写法。这些案例揭示了类型转换、内存存储、引用本质等核心知识点,帮助开发者规避常见编码陷阱。

zxjiaya的博客 1669

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

详解C语言指针

文章目录1.字符指针2.指针数组3.数组指针3.1 数组指针的定义3.2 &数组名和数组名的区别3.3 数组指针的使用 复习: 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 指针的运算。 1.字符指针 在指针的类型中我们知道有一种指针类型为字符指针char*; 一般使用: int main() { char ch = 'w'; char *p

iwkxi的博客 1万+

【C/C++】深入理解指针(六)

sizeof和strlen的对比 数组和指针笔试题详解 指针运算笔试题详解 解开指针神秘面纱

凤年徐的博客 2100

【C语言】大厂指针笔试题(1码+1图)详解——程序结果判断题

指针笔试题详解——程序结果判断题 笔试题1 int main() { int a[4] = { 1, 2, 3, 4 }; int *ptr1 = (int *)(&a + 1); int *ptr2 = (int *)((int)a + 1); printf( "%x,%x", ptr1[-1], *ptr2); return 0; } //程序的结果是什么? 代码分析: ① int a[4] = { 1, 2, 3, 4 }; 由于本人电脑是

DerrickWestbrook的博客 2781

【维生素C语言】练习:画图解析C语言指针笔试题

C语言指针笔试题,建议做完后再看答案。本篇博客有详细的解析部分,对每一道题进行深度的画图解析。

有道无术, 术尚可求。有术无道, 止于术。 3017

【十万字+详解C/C++】C/C++目录(持续更新)

本文是C/C++的文章总目录,包括大目录与详细目录

潮.eth的博客,计算机必关注博主 2075

C语言深入理解指针(4)--指针笔试题解析

第一个:strlen加数组名,数组名就是首元素得地址,所以strlen会一直找,直到找到\0,所以为6。第二个:a+0代表的是首元素的地址,指针的大小只与平台有关,我这里是X64所以是8。第二个:a+0代表的是首元素的地址,指针的大小只与平台有关,我这里是X64所以是8。第二个:a+0代表的是首元素的地址,指针的大小只与平台有关,我这里是X64所以是8。第五个:返回的是整个数组的地址,返会得其实也是地址首元素得地址,所以也为6。第六个:返回的是整个数组的地址,地址的内存只与平台有关,所以为8。

wer24_25的博客 1421

【C语言指针超详解(六)】--sizeof和strlen的对比,数组和指针笔试题解析,指针运算笔试题解析

C++研发方向学习者📖。

会当凌绝顶,一览众山小 1605

C/C++ 与嵌入式岗位常见笔试题详解

这篇文章详细解析了嵌入式岗位笔试中常见的C/C++考点,包括字符串拷贝陷阱、数组与指针的区别、文件大小获取方法和变量初始化问题。通过具体代码示例,文章揭示了strlen计算规则、sizeof运算符特性、文件操作函数使用技巧等易错点,并提供了正确修改方法。这些题目虽然基础,但容易因细节疏忽出错,是嵌入式笔试的高频考点。文章强调变量初始化和内存管理的重要性,帮助开发者避免常见陷阱。

zxjiaya的博客 534
上一篇: C/C++指针和数组笔试题解析
下一篇: C/C++字符函数和字符串函数模拟实现与详解————长度不受限制的字符串函数
steventom
博客等级 码龄4年 720粉丝 80原创
评论 66
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

steventom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值