数组、指针总结【面试题】
文章目录
- 0. 补充知识
- 数组笔试题
- 1. 一维数组
- 1.1 字符数组
- 1.1.1 sizeof
- 1.1.2 strlen
- 1.2 二维数组
- 2. 指针笔试题
0. 补充知识
在进入数组与指针的练习时,我们先来复习以下以下的知识点,这可以帮助我们更好的理解下面练习
- 数组是一组能存放相同类型的类型的元素,数组的大小取决于数组元素个数和元素类型
- 指针是地址,口头语的指针是指针变量,大小是4/8字节
- 数组是数组,指针是指针,两者不等价,只有在传参时数组会退化为指针
- 数组名是首元素的地址,这个地址可以存放在指针变量中,因此可以将数组和指针练习起来
- 二维数组
arr[m][n]可以看成是一个有m个元素的一维数组,每个数组元素是一个有n个元素的一维数组,因此二维数组名是有n个元素的一维数组的地址,多维数组以此类推- 只有当数组名单独放在sizeof内部和&数组名时,数组名才代表整个数组,其余情况数组名代表首元素的地址
- sizeof是编译期间进行的操作符,它是根据表达式的
类型属性来进行求值,因此不需要知道表达式的值属性,也不会对表达式进行运算- strlen是函数,函数的型参是
const char*,通常实参是char*,可以将char*传给更安全的const char*,如果传的参数不是const char*类型,则在函数体内部会自动转换成const char*来处理- 访问为定义地址时,不是一定会报错,如果访问的地址没有被其他程序调用,则不会报错,如果该地址被其他程序调用,则会报错
- 指针类型决定了(1)指针加减整数跳过的空间有多大(2)解引用指针的权限有多大
- 数组的下标引用实际上是间接引用的伪装
- 数据的存储模式有
大端存储、小端存储- 二维数组名等价于数组指针名
数组笔试题
1. 一维数组
//一维数组
int a[] = {1,2,3,4};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a+0));
printf("%d\n",sizeof(*a));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof(a[1]));
printf("%d\n",sizeof(&a));
printf("%d\n",sizeof(*&a));
printf("%d\n",sizeof(&a+1));
printf("%d\n",sizeof(&a[0]));
printf("%d\n",sizeof(&a[0]+1));

1.1 字符数组
1.1.1 sizeof



1.1.2 strlen

注:在34行中访问了未定义的地址,当这个地址被其他程序调用时会出现程序崩溃,否则不会崩溃



可以看见,程序崩溃后不会整形崩溃语句的后面语句
1.2 二维数组

注:sizeof不会对表达式进行运算,因此没有访问a[3],没有越界访问
2. 指针笔试题


2.

- p是一个大小为20字节的结构体指针,
指针+整数的意义是跳过多少个字节,因此p+0x1相当于跳过1个结构体大小20个字节,第一个答案就是00100014- 将p强转为
unsigned long类型,为整形,整形+0x1就是数值上+1,因此答案是00100001- 将p强转为
unsigned int*类型,为指针,+1表示跨过一个int型,因此答案是00100004
注:%p打印格式是8位16进制,高位不足补0

- ptr1指向a[3]后面的一个元素,ptr[-1]代表*(ptr1-1),表示访问ptr1前面4个字节的元素即arr[3]
- ptr2情况较复杂,我们画字节数据的存储图(字节内容以16进制表示)(以小端存储为例)
a原本是int*类型的数据值是01的,强转为int型在+1,最后ptr2指向该位置
在解引用访问从ptr2向后面的4个字节,因为是小端存储,所以解引用得到的值是0x02000000
注:%x是有多少位16进制就打印多少位16进制

逗号表达式的值是最后一个表达式的值,因此数组a只有前3个元素赋值了1,3,5
p=a[0],因此p[0]相当于a[0][0],答案为1

p是一个指向具有4个元素数组的指针,可以看作是列数为4的二维数组名
二维数组在内存中是连续存放的,因此二维数组元素arr[i][j]实际上是arr[0][0]后面i*列数+j个位置的元素
p的列数是4,a的列数是5
着重理解指针类型的意义

ptr1指向aa[1][4]后面一个整形,ptr1-1指向aa[1][4]
ptr2指向aa[1][0],ptr2-1指向aa[0][4]

pa原本指向a[0],pa++后指向a[1],*pa得到a[1]的值即“at”的地址


相关文章:
数组、指针总结【面试题】
文章目录0. 补充知识数组笔试题1. 一维数组1.1 字符数组1.1.1 sizeof1.1.2 strlen1.2 二维数组2. 指针笔试题0. 补充知识 在进入数组与指针的练习时,我们先来复习以下以下的知识点,这可以帮助我们更好的理解下面练习 数组是一组能存放相同类型的类型的元…...
七色电子标签
机种名 电子会议桌牌 型号 ESL_7color_7.3_D 外观尺寸 176.2x137.15x80mm 产品重量 268g 可视区域 163.297.92mm 外观颜色 银色 供电方式 锂电池供电2300mAh(Type-C 接口可充电) 显示技术 E-INK电子纸,双屏 像素 800x480 像…...
大数据是什么?发展前景怎么样
关于大数据的解释,比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。简单来说,大数据就是结构化…...
MYSQL必知必会 | 查询相关
汇总数据 聚集函数 有时只需要汇总数据,并不需要把数据实际检索出来,所以MySql提供了专门的函数 聚集函数:运行在行组上,计算和返回单个值的函数 函数说明AVG()返回某列平均值COUNT()返回某列的行数MAX()返回某列最大值MIN()返…...
Java学习环境一站说明(保姆级详细教学)
1.Java开发环境搭建官网下载www.oracle.com2.安装注意:1.选择安装位置时尽量不要安装到C盘,路径中不要有空格以及中文的存在2.开发人员安装的jdk中包含了jre,所以不需要单独安装jre3.环境变量配置打开高级系统设置2.点击环境变量3.在系统变量…...
05-Oracle中的对象(视图,索引,同义词,系列)
本章主要内容: 1.视图管理:视图新增,修改,删除; 2.索引管理:索引目的,创建,修改,删除; 3.同义词管理:同义词的作用,创建࿰…...
如何通过websoket实现即时通讯+断线重连?
本篇博客只是一个demo,具体应用还要结合项目实际情况,以下是目录结构: 1.首先通过express搭建一个本地服务器 npm install express 2.在serve.js中自定义测试数据 const express require(express); const app express(); const http req…...
爽,我终于掌握了selenium图片滑块验证码
因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇文章主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方&#x…...
二、SpringMVC注解式开发
1. RequestMapping注解 此注解就是来映射服务器访问的路径 可加在方法上,是为此方法注册一个可以访问的名称(路径) 可以加在类上,相当于是包名(虚拟路径),区分不同类中相同的action的名称 可区分get请求和post请求 package com.powernode.controller;import org.springframe…...
Java容器面试知识点总结
容器 java容器有哪些? String,数组以及Java.util 下面的集合类 List:存放有序,列表存储,元素可重复 ArrayList LinkedList Vector Set:无序,元素不可重复 HashSet TreeSet Map: 无序,元素可重复…...
增长:2023 IT运维发展趋势前瞻
根据IDC和智研咨询数据等平台公开数据显示,从2018年至2022年,全球ITOM行业市场规模以8.58%的年均复合增长率高速增长。其中,中国ITOM市场在2020-2023年的年复合增长率为10.7%,到2023年市场规模将达到165.7亿元。012022中国IT运维解…...
自己定义typescript的类型声明文件xx.d.ts
****内容预警***菜鸟新手内容,大佬请绕道,不对的请指出我们在使用typescript的使用,如果安装一个包没有相应的类型声明文件,ts的类型检查就会报错,所以我们经常会安装npm包对应的types类型声明包,比如uuid …...
数据分析方法及名词解释总结_(面试2)
1、用户画像 1.1、什么是用户画像?如何构建用户画像? - 知乎提到用户画像, 很多人都可能存在的错误认知,即把用户画像简单理解成用户各种特征,比如说姓名、性别、…https://www.zhihu.com/question/372802348/answer/2…...
【FLY】Java知识点总结
目录认识Java概念图名词解释历史版本基础知识编程规范关键字数据类型运算符数组Stringequals与流程控制引用数据结构常用数据结构HashMapLinkedHashMapWeakHashMapIdentityHashMapEnumMapTreeMapCopyOnWriteArrayList面向对象类反射注解IO异常线程EffectiveJava8JVM运行时数据区…...
SpringMVC-0307
三、RequestMapping注解1、RequestMapping注解的功能从注解名称上我们可以看到,RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理…...
华为OD机试 - 九宫格按键输入(C 语言解题)【独家】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:九宫格按…...
Oracle 11g RAC群集部署
Oracle 11g RAC群集部署 1.环境介绍: 操作系统:Oracle Enterprise Linux 6.5 Oracle数据库:Oracle 11.2.0.4 集群软件:Oracle Grid Infrastructure 11.2.0.4 2.所需介质: p13390677_112040_Linux-x86-64_1of7 p133…...
【C++、C++11】列表初始化、右值引用
文章目录📖 前言1. 统一的列表初始化1.1 { } 花括号初始化:1.2 std::initializer_list:2. 右值引用2.1 什么是左值和右值:2.2 右值的分类:2.3 左值引用和右值引用的比较2.3 右值的使用场景:2.4 新的类功能&…...
CMU15-445 Project.3总结
在线测试 Project #3 - Query Execution 以下是Project #3的网址,2022FALL的Project #3是实现一个查询执行,实现一系列算子,用于实现数据库内的SQL计算。项目中的 Query Execution 主要分为三个任务: Access Method Executors…...
002+limou+HTML——(2)HTML文档
000、前言 一般来说一个静态网页拥有四种元素:文字、图片、超链接、音频和视频(注意,即使在web网页中植入Javascript语言,也不一定是动态网页,真正的动态网页判断标准:是否和服务器产生交互) …...
低查重AI教材生成秘籍,借助AI工具轻松完成教材编写!
2026 年 AI 教材写作工具助力教材编写 在编写教材的过程中,如何满足多样化的需求呢?针对不同年龄段的学生,他们的认知水平差别很大,教材内容如果过于深奥或者过于简单,都会影响学习效果。而在课堂教学、自主学习等多种…...
Windows资源管理器的视觉革命:让iPhone照片在Windows上“活“起来
Windows资源管理器的视觉革命:让iPhone照片在Windows上"活"起来 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails…...
3步搞定B站缓存视频转换:m4s-converter完整使用指南
3步搞定B站缓存视频转换:m4s-converter完整使用指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经为B站缓存的视频无法在…...
ScienceDecrypting:三步永久解锁加密PDF,让学术文献重获自由
ScienceDecrypting:三步永久解锁加密PDF,让学术文献重获自由 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档,支持破解科学文库、标准全文数据库下载的文档。无损破解,保留文字和目录,解除有效期限制…...
BG3 Mod Manager:轻松管理《博德之门3》模组的高效工具
BG3 Mod Manager:轻松管理《博德之门3》模组的高效工具 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager BG3 Mod Manager 是一款专为《博…...
Postman与JMeter协同实战:接口功能验证与性能压测一体化方案
1. 这不是工具组合秀,而是接口测试工程师的生存现场你有没有过这样的经历:开发刚提测,接口文档还没写完,测试环境连基础鉴权都配不齐,但上线时间表已经钉死在下周三?这时候打开Postman点几下,发…...
Armv8-M安全系统中中断优先级分配策略
1. Armv8-M处理器中安全操作系统为何需要保留最低两个中断优先级 在基于Armv8-M架构的嵌入式系统开发中,中断优先级分配是一个需要精心设计的环节。特别是当系统采用TrustZone技术划分安全域(Secure Domain)和非安全域(Non-secure…...
软考 系统架构设计师之考试感悟5
接前一篇文章:软考 系统架构设计师之考试感悟4 今天(2026年05月23日),本人第五次参加了软考系统架构设计师的考试。一晃距离上次考试已经半年多了,感觉就像昨天一样。记得上一次考试结束后,直接去什刹海的南门涮肉和高中的兄弟们聚会,当天很嗨皮,一切仿佛刚刚过去一样。…...
从AUC稳健下界到量子场论:机器学习与物理的数学统一
1. 项目概述:当机器学习遇见量子场论如果你在机器学习领域待过一段时间,对AUC(Area Under the ROC Curve)这个指标一定不陌生。它是衡量二分类模型性能的黄金标准,一个完美的分类器AUC为1,随机猜测则为0.5。…...
量子机器学习在水质预测中的实践:QSVC与QNN模型对比分析
1. 项目概述:当量子计算遇见水质监测作为一名长期关注前沿技术落地的从业者,我最近完成了一个将量子机器学习(QML)应用于水质预测的实践项目。这个项目的核心,是尝试用量子计算的新范式,去解决一个经典的环…...




