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

news2024/12/24 2:38:05

目录

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

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸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

结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想 一句话概括就是两个快慢指针维护的一个会移动的区间 固定大小窗口:求哪个窗口元素最大、最小、平均值、和最大、和最小 可变大小窗口:求一个序列里最大、最小窗口是什么 2. 两个入门题 (1)子数组最大平…

#倍增 #国旗计划

文章目录 题目&#xff1a;题解代码 题目&#xff1a; 国旗计划 题解 三个技巧&#xff1a; 断环成链&#xff1a; 具体而言就是&#xff1a; if(w[i].R < w[i].L) w[i].R m; m是环的长度&#xff1b; 贪心&#xff1a; 选择一个区间i后&#xff0c;下一个区间只能从左端…

(c++)类和对象中篇

目录 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1. 类的 6 个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并…

线性绘制在NSDT 3D场布中的应用

什么是线性摆放&#xff1f; 线性摆放是指将一系列对象按照直线或者曲线进行排列&#xff0c;形成一条线或者弧线状的布局方式。在3D场布中&#xff0c;线性摆放可以应用于多个领域和场景&#xff0c;如展览设计、景观规划、商业空间布置等。 线性绘制在3D场布中的应用 展览设…

Postman全局配置变量token

Postman全局配置变量token 这里主要是介绍在 Postman 中全局配置token&#xff0c;以及方便以后查阅&#xff01;&#xff01;&#xff01; 一、简介 用户在开发或调试网络程序和网页B/S模式的程序时需要一些方法来跟踪网页请求&#xff0c;可使用一些网络的监视工具如Firebu…

多线程详解(下)

文章目录 常见锁策略乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁可重入锁 vs 不可重入锁公平锁 vs 非公平锁面试相关题 CAS什么是CASCAS 是怎么实现的CAS 有哪些应用1)实现原子类2)实现自旋锁 CAS的ABA问提什么是ABA问提ABA问提引来的BUG解决方法 相关面试…

基于LLMs构建产业多智能体

前言 随着信息技术的发展以及产业数字化的发展&#xff0c;在产业端&#xff0c;信息系统的建设和应用场景的搭建日渐完善&#xff0c;如何从完备的业务系统中挖掘数据价值以及如何从业务互联走向数据驱动决策成为产业数字化的新发展阶段。目前主要由数据中台承担数据汇聚、数…

Kettle安装初始化问题

1、Kettle启动闪退: 原因&#xff1a;自己的JDK是16 8.0的Kettle适配JDK1.8 【Spoon.bat 双击后闪退】解决办法 - 知乎 2、KettleDB连接中文命名 Unexpected problem reading shared objects from XML file : null Error reading information from input stream Invalid …

解读未知--文档图像大模型的探索与应用

前言&#xff1a; 近日&#xff0c;合合信息在多模态大模型与文档图像智能理解专题论坛上进行了分享。多模态大模型指的是能够处理多种语义信息的一种深度学习模型。文档图像智能理解则是指对文档和图像进行智能化解析和理解的技术。合合信息在这个领域的分享&#xff0c;无疑将…

PHP 变动:PHP 8 版本下字符串与数值的弱比较

文章目录 参考环境声明弱比较隐式类型转换字符串连接数学运算布尔判断相等运算符 字符串与数值的弱比较字符串转化为数值的具体规则字符串与数值的弱比较一般情况科学计数法前缀 0E 与 0e PHP8 在字符串与数值的弱比较方面做出的改动数值字符串优化 参考 项目描述搜索引擎Bing…

栈的应用(C++,进制转化、括号匹配)

十进制转化八进制&#xff0c;利用栈 #include<iostream>//十进制转八进制&#xff0c;利用栈 using namespace std; typedef struct stack {int data;stack* next; }stack, * linkstack; void Initstack(linkstack& s) {s NULL; } int Emptystack(linkstack s) {i…

华为云云耀云服务器L实例评测|基于开源库 Stable Diffusion web UI部署AI绘画应用

前言 随着云计算时代的进一步深入&#xff0c;越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基于这种需求&#xff0c;华为云焕新推出华为云云服务器实例新品。 华为云云服务器具有智能不卡顿、价优随心用、…

整合minio时出现的错误

Action:Correct the classpath of your application so that it contains compatible versions of the classes io.minio.S3Base and okhttp3.RequestBody 这个错误是我在整合minio时报的错&#xff0c;说实话遇到这个错误我还是很头大的&#xff0c;因为之前在springboot项目…

代码随想录算法训练营 动态规划part12

一、最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; public class Solution {public int maxProfit(int[] prices) {int len prices.length;if (len < 2) {return 0;}int[] dp new int[3];dp[0] 0;dp[1] -price…

使用Packet Tracer了解网络模型及Lab3 - 1

协议数据单元PDU&#xff08;Protocol Data Unit&#xff09;是指对等层次之间传递的数据单位。协议数据单元(Protocol Data Unit )物理层的 PDU是数据位&#xff08;bit&#xff09;&#xff0c;数据链路层的 PDU是数据帧&#xff08;frame&#xff09;&#xff0c;网络层的PD…

C语言习题

目录 1、数9的个数 2、分数求和 3、求最大值 4、乘法口诀表 4.1、题目内容:在屏幕上输出9*9乘法口诀表 4.2、题目内容:实现一个函数&#xff0c;打印乘法口诀表&#xff0c;口诀表的行数和列数自己指定如:输入9&#xff0c;输出9*9口诀表&#xff0c;输出12&#xff0c;输出12*…

PN结与二极管的特性

PN结的伏安特性 PN结的正向特性 PN结加正向电压时&#xff0c;P区电位高于N区点位&#xff0c;扩散电流大于漂移电流&#xff0c;PN结呈低阻性。 PN结的反向特性 PN结加反向电压时&#xff0c;P区电位低于N区电位&#xff0c;内电场对于扩散运动起到抑制作用&#xff0c;少…

带网络变压器的RJ45网口连接器/集成RJ45网口连接器

​ Hqst华强盛(华轩盛)导读&#xff1a;带网络变压器的RJ45是一种常见的网络连接器&#xff0c;它包含了一个RJ45接口和一个网络变压器&#xff0c;网络变压器位于RJ45接口内部&#xff0c;可以将数据信号转换为适合以太网传输的信号&#xff0c;并具有隔离电路和滤波电…

解决模型半透明时看到内部结构的问题

大家好&#xff0c;我是阿赵。   之前在做钢铁侠线框效果的时候&#xff0c;说到过一种技术&#xff0c;这里单独拿出来再说明一下。   我们经常要做一些模型半透明效果&#xff0c;比如这个钢铁侠的模型&#xff0c;我做了一个Rim边缘光的效果&#xff0c;边缘的地方亮一点…

Python|OpenCV-访问并修改图片像素值,鉴别彩色和灰色图像(6)

前言 本文是该专栏的第6篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV对图像进行操作的时候,通常需要熟练掌握一些Numpy知识点。因为有的时候需要用到Numpy和OpenCV结合去实现图像的操作,所以说想要写出较好的OpenCV代码的最好方法,就需要有Nump…