【C语言】指针和数组笔试题解析(2)
【C语言】指针和数组笔试题解析(1),
这是第一篇关于sizeof与strlen在指针中的应用,而这一篇主要讲解在各种情形下的灵活运用,也是大厂中经典的面试题
第一题:
int main()
{int a[5] = { 1, 2, 3, 4, 5 };int *ptr = (int *)(&a + 1);printf( "%d,%d", *(a + 1), *(ptr - 1));return 0;
}
//程序的结果是什么?
答案:
2,5
解析:
&a为整个数组的地址,+1就会跳过一个数组,
此时&a + 1的类型为数组指针,强转为整形指针放在ptr中,
那么ptr-1为
故*(ptr - 1)为5,而*(a + 1)其实是a[1]的另一种写法,为2
一一一一一一一一一分割线一一一一一一一一一一
第二题:
//由于还没学习结构体,这里告知结构体的大小是20个字节
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;
}
答案:
00100014
00100001
00100004
解析:
第一个printf:
p为结构体指针,结构体指针+1会跳过一个结构体,
从题目中我们已知此结构体大小为20字节,
要注意p是16进制,十进制的20是十六进制的14,加上20后为100014,
打印时是以地址形式打印,故要8个16进制,最终结果为00100014,
第二个printf:
p被强转为整形,
整形+1就是+1,只有指针加减才是比较特殊的,
然后以地址形式打印为00100001
第三个printf:
p被强转为整形指针,+1会跳过一个整形,即4
结果为00100004
一一一一一一一一一分割线一一一一一一一一一一
第三题:
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;
}
答案:
4,2000000
解析:
ptr[-1]:
ptr[-1]可以写成*(ptr-1)
*ptr:
a被转化为整形,+1就是+1,
然后被强转为整形指针,由于一个地址管理一个字节,故指针此时指向01后
解引用后会在01后边访问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;
}
答案:
1
解析:
注意{}中是(),是逗号表达式,

p为第一行数组名,数组名[0]表示第一行第一个元素,即为1
此贴·会持续更新,欢迎纠错与讨论
相关文章:
【C语言】指针和数组笔试题解析(2)
【C语言】指针和数组笔试题解析(1), 这是第一篇关于sizeof与strlen在指针中的应用,而这一篇主要讲解在各种情形下的灵活运用,也是大厂中经典的面试题 第一题: int main() {int a[5] { 1, 2, 3, 4, 5 };in…...
3.3 DLL注入:突破会话0强力注入
Session是Windows系统的一个安全特性,该特性引入了针对用户体验提高的安全机制,即拆分Session 0和用户会话,这种拆分Session 0和Session 1的机制对于提高安全性非常有用,这是因为将桌面服务进程,驱动程序以及其他系统级…...
C语言 —— 初步入门知识(内存、指针、结构体)
本篇文章将接着上篇继续介绍C语言的基础知识,那么对于C语言大部分初学者会觉得难以理解, 所以作者将指针单独拿出来写篇较短的文章进行讲解。 1.指针 1.1 内存 要学习指针,就先要了解内存。一起来看。 内存是计算机中的关键组成部分ÿ…...
PHP8中字符串与数组的转换-PHP8知识详解
在php8中使用explode()函数和implode()函数实现字符串和数组之间的转换。 1、使用explode()函数把字符串按照一定的规则拆分为数组中的元素,并且形成数组。 使用explode()函数把字符串转换数组,示范代码: <?php $string "html,cs…...
Wordtune:文本编辑工具
【产品介绍】 名称 Wordtune 上线时间 成立于2018年。 具体描述 Wordtune是一款基于人类智能的文本编辑工具,它可以帮助用户快速修改和重写英文,以改进文本的清晰度、流畅度和可读性。Wordtune使用先进的自然语言处理技术&#x…...
notifyIcon动态图标
定时器内调用下面代码 代码如下: if(DateTime.Now.Second % 2 0) {notifyIcon1.Icon new System.Drawing.Icon(Application.StartupPath "\abc.ico");}else{notifyIcon1.Icon new System.Drawing.Icon(Application.StartupPath "\abc2.ico"…...
2023年墨西哥 SP/BMV IPC 研究报告
第一章 指数概况 1.1 指数基本情况 墨西哥 S&P/BMV IPC 指数衡量在墨西哥证券交易所 (Bolsa Mexicana de Valores, BMV)上市,规模最大、流动性最高的股票表现。提供一个覆盖墨西哥股市的广泛、具有代表性且可轻易复制的指数。根据多元化要求,按市值…...
JWT生成与解析/JWT令牌前端存储
第一步:创建项目 添加Maven依赖: <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version> </dependency> <dependency><groupId>org.s…...
[交互]前端展示服务端获取的图片
可以通过以下步骤从服务端获取图片: 引入axios库:在前端代码中使用axios库来发送HTTP请求。可以通过以下方式引入axios: import axios from axios;发送请求:使用axios发送HTTP请求,获取图片文件的二进制数据。发送请求…...
LeetCode2.两数相加
一看完题,我的想法是先算出这两个链表表示的数,然后相加,然后把这个数一位一位的分配给第三个数组,这种方法应该很简单但是要遍历三次数组,于是我就想直接一遍遍历,两个链表同时往后面遍历,把这…...
Linux编译过程与交叉编译
一.GCC由来 GCC(GNU编译器套件)是一个自由开源的编程工具集,用于编译和链接C、C和其他编程语言的程序。它由理查德斯托曼(Richard Stallman)和其他自由软件基金会(Free Software Foundation)的…...
MediaPipe+OpenCV 实现实时手势识别(附Python源码)
MediaPipe官网:https://developers.google.com/mediapipe MediaPipe仓库:https://github.com/google/mediapipe 一、MediaPipe介绍 MediaPipe 是一个由 Google 开发的开源跨平台机器学习框架,用于构建视觉和感知应用程序。它提供了一系列预训…...
为什么选择C/C++内存检测工具AddressSanitizer?如何使用AddressSanitizer?
目录 1、C程序中的内存问题 2、AddressSanitizer是什么? 3、AddressSanitizer内存检测原理简述 3.1、内存映射 3.2、插桩 4、为什么选择AddressSanitizer? 4.1、Valgrind介绍 4.2、AddressSanitizer在速度和内存方面为什么明显优于Valgrind 4.3…...
获取vue当前页面url问号后面的参数
除了使用 window.location.search 或 Vue Router 的 $route.query 来获取 URL 问号后面的参数之外,您还可以使用 JavaScript 中的正则表达式来解析 URL 中的参数部分。以下是一个示例: // 获取当前页面的完整 URL const currentURL window.location.hre…...
Linux编程之线程池的设计与实现
Linux编程之线程池的设计与实现(C98) 代码 假设服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是空间换时间, 即“浪费”服务器的硬件资源,以换取其运行效率。 提升服务器性能的一个重要方法就是…...
stm32---定时器输入捕获
一、输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能,输入捕获就是其中一种。 STM32F1除了基本定时器TIM6和TIM7,其他定时器都具有输入捕获功能 。输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获…...
打造生产级Llama大模型服务
对于任何想要尝试人工智能或本地LLM,又不想因为意外的云账单或 API 费用而感到震惊的人,我可以告诉你我自己的旅程是如何的,以及如何开始使用廉价的消费级硬件执行Llama2 推理 。 这个项目一直在以非常活跃的速度发展,这使得它非…...
Acwing 828. 模拟栈
Acwing 828. 模拟栈 题目要求思路讲解代码展示 题目要求 思路讲解 栈:先进后出 队列:先进先出 代码展示 #include <iostream>using namespace std;const int N 100010;int m; int stk[N], tt;int main() {cin >> m;while (m -- ){string o…...
初识Docker
文章目录 Docker安装Docker简介1.什么是虚拟化、容器化?2. 为什么需要虚拟化、容器化?3. 虚拟化的实现方式主机虚拟化的实现方式容器虚拟化实现 4. 虚拟机和Docker的区别 Docker安装 基于Centos7进行安装 1.确认系统版本和CPU架构,Centos7的x86_64架构…...
HTTPS Tomcat Servlet 博客系统 软件测试的概念 Linux
第 1 题(多选题) 题目名称: 以下关于http和https说法正确的是 题目内容: A .http是超文本传输协议 B .https是超文本传输安全协议 C .http是明文传输 D .https是加密传输 第 2 题(单选题) 题目名称…...
PCL2启动器“被管理员禁止“错误全面解析与解决方案
PCL2启动器"被管理员禁止"错误全面解析与解决方案 【免费下载链接】PCL 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 近期有大量PCL2启动器用户反馈在启动游戏时遭遇"被管理员禁止"的错误提示,导致无法正常进入游戏。这一问题主要…...
OpenArk内核驱动加载故障排除:从问题诊断到解决方案
OpenArk内核驱动加载故障排除:从问题诊断到解决方案 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk OpenArk作为新一代Windows反Rootkit工具,其…...
Qwen3-4B写作大师优化技巧:3个提示词方法让AI输出质量翻倍
Qwen3-4B写作大师优化技巧:3个提示词方法让AI输出质量翻倍 1. 为什么提示词对Qwen3-4B如此重要 Qwen3-4B-Instruct不是普通的文本生成模型,而是一个具备深度推理能力的AI写作伙伴。与基础模型不同,它经过专门的指令微调(Instruc…...
Qt项目实战:用Quazip源码集成搞定带进度条的文件压缩解压(附完整工程)
Qt项目实战:零依赖集成Quazip实现带进度监控的压缩解压工具 在桌面应用开发中,文件压缩解压功能就像瑞士军刀里的剪刀——看似不起眼,但关键时刻缺它不可。无论是开发安装包制作工具、数据备份软件还是资源管理器,处理ZIP文件都是…...
Python中数据分块处理的实现方法
在实际的数据处理任务中,我们经常需要处理大规模数据集。一次性加载所有数据到内存可能会导致内存溢出,这时数据分块处理就显得尤为重要。本文将介绍Python中三种高效的数据分块处理方法。 一、为什么需要数据分块处理? 在处理大型数据集时…...
Nano语法高亮配置最佳实践:基于nanorc项目的经验分享
Nano语法高亮配置最佳实践:基于nanorc项目的经验分享 【免费下载链接】nanorc Improved Nano Syntax Highlighting Files 项目地址: https://gitcode.com/gh_mirrors/na/nanorc Nano语法高亮配置是提升命令行文本编辑体验的关键技巧。如果你经常使用Nano编辑…...
【shell编程】深入解析Permission denied:7种实战解决方案与场景应用
1. 为什么会出现Permission denied错误? 第一次在终端里看到"Permission denied"这个红色警告时,我正试图运行一个刚写好的shell脚本。当时完全懵了,明明文件就在那里,为什么说没权限?后来才发现,…...
【 MySQL 】第三节 - 约束实战全攻略
🌟【深度剖析】MySQL 约束实战全攻略:从建表到外键行为管理(附避坑指南) 前言 在数据库设计中,约束(Constraint) 是保障数据一致性、完整性和业务逻辑性的“安全锁”。日前我系统学习了 MySQL…...
3个步骤掌握InjectFix热修复核心方案
3个步骤掌握InjectFix热修复核心方案 【免费下载链接】InjectFix InjectFix is a hot-fix solution library for Unity 项目地址: https://gitcode.com/gh_mirrors/in/InjectFix 核心能力解析 🔧 原生方法修复:解决线上函数逻辑错误 解决什么问…...
TradingAgents-CN完整指南:5分钟搭建你的AI股票分析系统
TradingAgents-CN完整指南:5分钟搭建你的AI股票分析系统 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 还在为复杂的金融量化系统搭…...




