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

C语言数组和指针笔试题(四)(一定要看)

目录

  • 二维数组
    • 例题一
    • 例题二
    • 例题三
    • 例题四
    • 例题五
    • 例题六
    • 例题七
    • 例题八
    • 例题九
    • 例题十
    • 例题十一
  • 结果

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸C语言
🐿️🐿️🐿️C语言例题
🐣🐓🏀python

二维数组

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a));
3:printf("%d\n",sizeof(a[0][0]));
4:printf("%d\n",sizeof(a[0]));
5:printf("%d\n",sizeof(a[0]+1));
6:printf("%d\n",sizeof(*(a[0]+1)));
7:printf("%d\n",sizeof(a+1));
8:printf("%d\n",sizeof(*(a+1)));
9:printf("%d\n",sizeof(&a[0]+1));
10:printf("%d\n",sizeof(*(&a[0]+1)));
11:printf("%d\n",sizeof(*a));
12:printf("%d\n",sizeof(a[3]));

在做之前我们再来复习一下数组名的意义

  1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
  2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
  3. 除此之外所有的数组名都表示首元素的地址

例题一

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a));

这里的a是整个数组的地址,所以sizeof会计算整个数组的内存大小,因此结果就是(3*4)(数组的元素)*4(整形类型的大小)=48

例题二

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a[0][0]));

这里的a[0][0]是指的数组首元素,因为是特别指定的一个元素,所以只需要计算整个元素的内存大小即可,因此a[0][0]是一个整形类型的元素,结果就是4

例题三

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a[0]));

a[0]是表示的第一行的数组元素,为了方便理解,我们暂时将数组中的元素改变一下,调试结果如图
在这里插入图片描述
显然这里的a[0]是指的数组第一行,而不是第一列,第一行元素有4个,因此结果应该是4(第一行元素)*4(整形类型的大小)=16

另外这里顺便补充一下
我们可以将二维数组表示成这样
在这里插入图片描述
但实际上二维数组的存储方式和上图是有一些区别的
在这里插入图片描述
这是每一行的地址,我们再来看一下每个元素的地址
在这里插入图片描述
这是每一行的每一个元素,地址的表示方式是16进制,因此我们可以看出每一个元素的地址相差为4个字节,第二行的首元素和第一行末尾的元素地址相差也是4个字节,因此我们可以推断出,二维数组的存储是下一行首元素地址接在上一行末尾元素的地址上,存储方式如图
在这里插入图片描述

例题四

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a[0]+1));

这里可能会有人非常纠结,a[0]+1是直接跳过第一行,还是直接跳过第一行的第一个元素,我们来看看调试的结果

在这里插入图片描述
a[0]+1是跳过第一行第一个元素,但是我们可以看到单独的a[0]却表示的整个第一行元素,这是为什么呢?

其实二维数组我们可以这样写(下面的元素是为了方便理解所以改的)
a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},这有点类似于数学中的换元

这里我们将二维数组看出一维数组,将二维数组的每一行元素整体看成一个元素,{1,2,3,4}就相当于换元中的t ,而要换的元素就是1,2,3,4

因此a[0]就是换元之后的第一个元素,a[0]={1,2,3,4},而a[0]+1就是在换元前的四个元素中寻找第二个元素

例题五

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(*(a[0]+1)));

上一题已经讲过了a[0]+1是第一行中的第二个元素,对这个元素解引用就是一个整形类型,所以结果就是4
在这里插入图片描述
这里我们可以看出a[0]+1其实是一个地址,所以我们可以推断二维数组存的是一位数组的地址,也就是说a[3]={&b[0],&b[1],&b[2],&b[3]},这里的数组b就是每一行的元素

例题六

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a+1));

这里的a不是单独放在括号里的,所以a表示第一行的地址,a+1就是跳过第一行,所以a+1=a[1]是第二行的地址,既然是地址结果就为4或者8

例题七

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(*(a+1));

这里的a+1上一题已经说过了,是第二行的地址,对第二行地址解引用,就是第二行的四个元素,所以结果就是4*4=16

例题八

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(&a[0]+1));

&a[0]是第一韩的地址,&a[0]+1为第二行的地址所以结果为4或者8,也可以用前面换元的思想去理解,
a[3][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}},这里的a[0]是第一个{0,0,0,0},而a[0]+1=a[1]
a[1]=第二个{0,0,0,0},但注意这里的是&a[0]+1,&a[0]+1=&a[1]
在这里插入图片描述

例题九

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(*(&a[0]+1)));

对第二行的地址进行解引用就是第二行的四个元素,所以结果就是4*4=16

例题十

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(*a));

这里的a因为不是单独放在括号里的(有个号),所以这里的a就表示第一行元素,结果就是44=16

例题十一

1:int a[3][4] = {0};
2:printf("%d\n",sizeof(a[3]));

a[3]和之前的a[0] a[1]是一样的,表示的是第四行元素,结果就是4*4=16

结果

在这里插入图片描述

相关文章:

C语言数组和指针笔试题(四)(一定要看)

目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个人主页 🥸🥸🥸C语言 🐿️…...

FragmentManager is already executing transactions

本文解决问题: java.lang.IllegalStateException: FragmentManager is already executing transactions 问题背景描述: 在Fragment中 用tablayoutviewpagerfragment,即Fragment嵌套Fragment场景、或者ViewPager2嵌套ViewPager2时。 执行生命…...

Matlab中clear,close all,clc功能详细说明

背景: 我们在写matlab程序时,首行总是先敲入:clear; close all; clc;,但你真的知道这三句话的具体作用嘛,下面进行详细说明和演示。 一、clear的功能 clear的功能:清理工作区变量,不清理前是…...

Typora安装无需破解免费使用

Typora简介: 在介绍Typora软件之前,需要先介绍一下MARKDOWN。 MARKDOWN是一种轻量型标记语言,它具有“极简主义”、高效、清晰、易读、易写、易更改纯文本的特点。 Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、…...

LuatOS-SOC接口文档(air780E)--errDump - 错误上报

示例 -- 基本用法, 10分钟上报一次,如果有的话 if errDump thenerrDump.config(true, 600) end-- 附开源服务器端: https://gitee.com/openLuat/luatos-devlogerrDump.dump(zbuff, type, isDelete) 手动读取异常日志,主要用于用户将日志发送给自己的服务器而不是I…...

低代码平台如何助力国内企业数字化转型?

数字化是什么 数字化(Digitalization)是将许多复杂多变的信息转变为可以度量的数字、数据,再以这些数字、数据建立起适当的数字化模型,把它们转变为一系列二进制代码,引入计算机内部,进行统一处理&#xf…...

SI3262—高度集成的低功耗SOC芯片

Si3262是一款高度集成的低功耗SOC芯片,其集成了基于RISC-V核的低功耗MCU和工作在13.56MHz的非接触式读写器模块。 MCU模块具有低功耗、Low Pin Count、宽电压工作范围,集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、TSC等…...

除静电离子风机在无尘车间的应用

除静电离子风机在无尘车间中的应用非常广泛,主要是用来控制车间内的静电荷,防止静电对车间内的电子元器件、电路板等敏感部件产生损害。 具体来说,除静电离子风机通常采用电离器产生大量负离子,将车间内的静电荷中和成无害的水蒸气…...

Linux上的Pip和Python升级指南

在Linux系统上,保持Pip和Python版本的最新状态对于顺利进行Python开发至关重要。通过升级Pip和Python,你可以享受到最新的功能、修复的bug以及提升的开发效率。本文将为你提供在Linux上升级Pip和Python的详细指南,助你打造更强大的开发环境。…...

4G工业路由器高效数据传输助力光伏发电站管理

光伏发电站是能源产业中一种利用太阳能技术将光转化为电能的常见设施。随着物联网技术与环保能源的不断进步和应用的普及,光伏发电站的管理也变得更加便捷高效。 光伏发电站结合4G工业路由器实现远程监控管理,并用于采集发电站中的传感器数据和监控信息…...

【音视频笔记】Mediacodec+Muxer生成mp4,浏览器无法播放问题处理

文章目录 背景解决过程曲线修复方案 解决问题根源 背景 最近在测试视频录制功能时发现,AudioRecord MediaCodec MediaMuxer生成的MP4,PC浏览器无法播放 ,但是Android、Windows、Mac的播放器应用都能正常播放。虽然不禁想吐槽浏览器视频组件…...

debug过程中,矩阵左乘右乘相关概念梳理

1. 变换点或者变换向量 1.1左乘 矩阵左乘通常是指对”目标点“进行左乘,即: A ′ R ∗ A AR*A A′R∗A 其中,A为原始3维点,表示一个3*1的列向量,R为33的旋转矩阵,A‘为变换后的点 B ′ T ∗ B BT*B B′T∗B 其中…...

Ubuntu 安装Kafka

在本指南中,我们将逐步演示如何在 Ubuntu 22.04 上安装 Apache Kafka。 在大数据中,数以百万计的数据源生成了大量的数据记录流,这些数据源包括社交媒体平台、企业系统、移动应用程序和物联网设备等。如此庞大的数据带来的主要挑战有两个方面…...

洗地机性价比高的是哪款?高性价比洗地机排名

洗地机已成为当下备受欢迎的智能家电之一,但在挑选合适的洗地机时,面对各种新词汇和功能选择,可能会让人感到困惑。因此,为了帮助大家在购买洗地机时不踩坑,我们基于市面上主流品牌的综合分析对比,总结出来…...

安装konga

创建konga数据库 docker run --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:kong{IP}:5432/konga这里要注意docker部署时IP不能直接访问localhost 安装konga docker run -p 1337:1337 \--network kong-net \--name konga \-e "NODE_ENVprodu…...

算法基础之高精度总结

目录 高精度算法分类 高精度加减乘除的异同点 加和乘 相同点 减和除 相同点 不同点 处理前导0的方式 高精度算法分类 分类:加、减、乘、除 其中加减乘都适用于两个数都是高精度,除法因为除数是高精度的话不好用整除的方法,所以除法时…...

oracle TNS Listener 远程投毒漏洞修复

有个客户在等保测评过程,测评公司扫出一个关于oracle的漏洞如下: 客户是RAC环境11.2.0.4,在生产修复漏洞前我做了如下测试验证: 测试环境准备: RAC一套11.2.0.4 实例名dbserver [oraclehisdb1 ~]$ cat /etc/hosts …...

第二章:最新版零基础学习 PYTHON 教程(第一节 - Python 输入/输出–在 Python 中获取输入)

开发人员经常需要与用户交互,以获取数据或提供某种结果。如今,大多数程序都使用对话框来要求用户提供某种类型的输入。而Python为我们提供了两个内置函数来读取键盘输入。 目录 输入(提示) raw_input(提示) 输入函数在 Python 中的工作原理:...

react create-react-app v5 从零搭建项目

前言: 好久没用 create-react-app做项目了,这次为了个h5项目,就几个页面,决定自己搭建一个(ps:mmp 好久没用,搭建的时候遇到一堆问题)。 我之前都是使用 umi 。后台管理系统的项目 使用 antd-…...

2023软件测试八股文,涵盖所有面试题

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...