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

c语言学习25二维数组

1 二维数组

1.1二维数组认识

二维数组本质是一个数组。

举例:

        int a[10][3]

        数组名        a;

        元素个数10;

        数组元素类型:int         [3];

        数组元素下标:0~9

        这是一个数组,有十个元素,每个元素内有三个数据。

1.2二维数组初始化

        1每个元素使用{},中间用逗号间隔,整体再使用{}

                int a[2][3]={{1,2,3},{2,3,1}};

        可以部分初始化

                 int a[2][3]={{1,2,3},{2}};//未初始化部分默认为0

        可以省略元素个数

                 int a[][3]={{1,2,3},{2,3,1}};

不能省略元素的数据个数

1.3二维数组具体的数据访问

1.3.1下标方式:

        数组具体的数据内容:数组名[i][j];

        数组的具体数据地址:&数组名[i][j];

int a[2][3]={{1,2,3},{2,3,1}};

一号元素的一号数据 a[1][1]=3;

0号元素的0号数据a[0][0]=1;

for(int i=0;i<3;i++)

{

        for(int j=0;j<3;j++)

        {

                scanf("%d",a[i][j]);

        }

}

二维数组空间存储:每个数据空间连续

1.3.2数组名方式

二维数组数组名的方式访问数组中的具体数据

int a[3][3]={{1,2,3},{4,5,6,},{7,8,9}};

a数组名,数组首元素地址

(a+1):        1号元素的地址

*(a+1):*(a+1)+0  1号元素的0号数据地址

一号元素取内容不是具体数值,是该元素首数据的地址

*(a+1):*(a+1)+1 1号元素的1号数据地址

*a+1  0号元素的1号数据的地址

*(*a+1 ) 0号元素的1号数据的内容

元素取内容不是具体值而是地址,因为元素下还有多个数据

*(*(a+2)+3)二号元素三号数据的内容

1.3.3指针类型

访问数组中的具体数据

指针的方式访问(指向)数组中的具体数据

指针的方式访问(指向)数组中的元素

指针的方式访问(指向)数组

int a[3][3]={{1,2,3},{4,5,6,},{7,8,9}};

int *p;

//p=a;//a是首元素地址,*a是首元素首数据地址

p=&a[0][0];

p++;

1.4二维数组的应用

二维数组:一个数组中有多个数组

一个字符串应该存储在一个字符数组中

一个二维数组可以存储多个字符串

2 数组与指针

2.1指针与数组:

说明

int *a[10];

int (*a)[10];

有括号就是指针没括号就是数组

是指针就以指针的要素分析

是数组就以数组的要素分析

2.2指针数组

说明:数组里的元素都是地址类型:指针数组

int *a[10];

数组名: a

数组元素个数:10

数组元素类型:int *

数组元素下标:0~9

此数组有10个元素,每个元素都可以存一个地址编号,,每个元素相当于一个指针变量

2.3数组指针

(整体操作数组)

指针变量可以存整型变量的地址:整型指针  int *p;

.

.

.

.

指针变量可以存函数的地址:函数指针  int *p;

指针变量可以存数组的地址:数组指针  int *p;

int (*a)[10];

变量名:a

指向对象类型 :int    [10];

此指针可以存一个数组的地址编号,要求10元素,每个元素是int类型

int a[10]={10,20,30,40}

int (*m)[10];

m=&a;

m++;//偏移40字节

&a[0]0号元素的地址

a数组首元素地址,0号元素的地址

&a数组的地址

2.3.1数组指针的使用

一维数组

int a[10];

char b[10];

        通过指针访问(指向)一维数组中的元素数据

int *p; p=a;  //p=&a[0] p++ *p:下一个整型元素值

int *q; q=b;  //q=&b[0] q++ *q:下一个整型元素值

char *q;q=b;

         通过指针访问(指向)一维数组

①定义一个指针变量 

        指向对象类型是一个数组  int        [10];数组类型 int   [10]

  ②明确指向

p=&a;

③使用:无实际使用价值

        

二维数组

int a[3][10];

char b[3][10]={"aaa","bbb","ccc"};

        指针的方式访问(指向)数组中元素下的具体数据

        int *p;p=&a[0][0];  // p++ *p:同元素的下一个整型数据

        char  *q; q=&b[0][0];// q++ *q:同元素的下一个字符型数据

        指针的方式访问(指向)数组中的元素

        指针的方式访问(指向)数组

①定义一个指针变量 

        指向对象类型是一个数组  char       [10];

        数组类型                         char   [10];

        char(*p)[10];

  ②明确指向

p=b;

③使用

p++;        //下一个元素地址     下一个字符串

需求:主函数有一个指令包,指令包有10个字符串指令,用户输入一个字符串指令

下一个子函数,判定用户输入的字符串指令是否在指令包中,

在返回1,不在返回0;

分析:主函数:

指令包二维数组

用户输入指令字符串

子函数:参数:char(*p)[10],char *m

返回值:int 

说明:

和二维数组中,每个字符串进行对比,

#include <stdio.h>

#include <string.ha>

int main(void)

{

u8 val;

char user[10]={0};

char  cmd[10][10]={
"aaa","123";"sds","sds","aba","aas","ccc",
}        

//用户输入指令

printf("请输入指令");

scaf("%s",a)

//调用函数判断

val=fun(cmd,user);

if(val==1)

{

}

else

{

}

 }

int fun( char (*p)[10],char *m)

{

int i;

for(i=0;i<9;i++)

{

      if( strcmp(m,(char *)(p+i))==0) ;//指针强转

}

}

相关文章:

c语言学习25二维数组

1 二维数组 1.1二维数组认识 二维数组本质是一个数组。 举例&#xff1a; int a[10][3] 数组名 a&#xff1b; 元素个数10&#xff1b; 数组元素类型&#xff1a;int [3]; 数组元素下标&#xff1a;0~9 这是一个数组&#xff0c;有十个元素&#xff0c;每个元…...

如何理解Lua 使用虚拟堆栈

虚拟堆栈的基本概念 Lua使用虚拟堆栈来实现Lua和C&#xff08;或其他宿主语言&#xff09;之间的交互。这个虚拟堆栈是一个数据结构&#xff0c;用于存储Lua的值&#xff0c;如数字、字符串、表、函数等。它在Lua状态机&#xff08;lua_State&#xff09;内部维护&#xff0c;为…...

【倍数问题——同余系】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e5 10, M 1e3 10; int maxx[M][4]; void consider(int r, int x) {if(x > maxx[r][1]){maxx[r][3] maxx[r][2];maxx[r][2] maxx[r][1];maxx[r][1] x;}else if(x > maxx[r][2]){maxx[…...

「San」监听DOM变化的方法

在 San框架 中监听组件内部字体大小并调整宽度&#xff0c;可以结合 自定义事件 或 数据绑定 来实现动态调整。San 框架没有直接的监听 DOM 尺寸变化的内置方法&#xff0c;但可以通过以下步骤实现&#xff1a; 方法一&#xff1a;使用 ResizeObserver 监听字体变化 在组件的 …...

如何选择服务器

如何选择服务器 选择服务器时应考虑以下几个关键因素&#xff1a; 性能需求。根据网站的预期流量和负载情况&#xff0c;选择合适的处理器、内存和存储容量。考虑网站是否需要处理大量动态内容或高分辨率媒体文件。 可扩展性。选择一个可以轻松扩展的服务器架构&#xff0c;以便…...

嵌入式驱动面试总结

操作系统&#xff1a; 中断的处理流程&#xff0c;中断处理需要注意些什么 软中断和硬中断区别 linux驱动用过那些锁&#xff0c;信号量&#xff0c;互斥锁 自旋锁和互斥锁的区别 二值信号量和互斥信号量有什么区别 进程锁怎么实现的&#xff0c;说一下流程&#xff1b; …...

Uniapp 简单配置鸿蒙

Uniapp 简单配置鸿蒙 前言下载并配置鸿蒙IDEHbuilder X 配置基本的信息生成相关证书登录官网获取证书IDE配置证书添加调试设备可能出现的问题前言 如今鸿蒙的盛起,作为多端开发的代表也是开始兼容鸿蒙应用的开发,接下来我将介绍如何在uniapp中配置鸿蒙。 注意:hbuilder X的…...

线程池的实现与应用

一、线程池 一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用&#xff0c…...

基于Java Springboot单位考勤系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…...

近源渗透|HID ATTACK从0到1

前言 对于“近源渗透”这一术语&#xff0c;相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段&#xff0c;实地侵入企业办公区域&#xff0c;利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息&#xff0c;并以隐蔽的…...

【linux】插入新硬盘如何配置:格式化、分区、自动挂载(Ubuntu)

文章目录 具体方法GPT分区表&#xff08;GUID Partition Table&#xff09;&#xff08;建议都用这种分区方法&#xff09;MBR分区表方法&#xff08;最大支持2TB分区&#xff09;&#xff08;Master Boot Record&#xff09; 附加&#xff1a;如何查看硬盘的型号另外&#xff…...

YOLOv8-ultralytics-8.2.103部分代码阅读笔记-block.py

block.py ultralytics\nn\modules\block.py 目录 block.py 1.所需的库和模块 2.class DFL(nn.Module): 3.class Proto(nn.Module): 4.class HGStem(nn.Module): 5.class HGBlock(nn.Module): 6.class SPP(nn.Module): 7.class SPPF(nn.Module): 8.class C1(nn.M…...

代码随想录算法训练营第五十三天|Day53 图论

字符串接龙 https://www.programmercarl.com/kamacoder/0110.%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8E%A5%E9%BE%99.html 思路 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX 1000 // 假设最大字符串数 #define WORD_LENGTH 100 // 假…...

LeetCode:203.移除链表元素

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;203.移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.…...

知识见闻 - 数学: 均方根 Root Mean Square

What is Root Mean Square (RMS)? 在统计学上&#xff0c;均方根&#xff08;RMS&#xff09;是均方的平方根&#xff0c;而均方是一组数值的平方的算术平均数。均方根也称为二次均值&#xff0c;是指数为 2 的广义均值的一种特例。均方根也被定义为基于一个周期内瞬时值的平方…...

机器硬件调优

grub参数 ipv6.disable1 ipv6.autoconf0 intel_pstatedisable nohzoff idlepoll intel_idle.max_cstate0 processor.max_cstate0 mceignore_ce nmi_watchdog0 transparent_hugepagenever pcie_aspm.policyperformance audit0 irqaffinity0 nosoftlockup grub2-mkconfig -o /bo…...

如何更改手机GPS定位

你是否曾想过更改手机GPS位置以保护隐私、玩游戏或访问受地理限制的内容&#xff1f;接下来我将向你展示如何使用 MagFone Location Changer 更改手机GPS 位置&#xff01;无论是在玩Pokmon GO游戏、发布社媒贴子&#xff0c;这种方法都快速、简单且有效。 第一步&#xff1a;下…...

HarmonyOS(57) UI性能优化

性能优化是APP开发绕不过的话题&#xff0c;那么在HarmonyOS开发过程中怎么进行性能优化呢&#xff1f;今天就来总结下相关知识点。 UI性能优化 1、避免在组件的生命周期内执行高耗时操作2、合理使用ResourceManager3、优先使用Builder方法代替自定义组件4、参考资料 1、避免在…...

Mysql的加锁情况详解

最近在复习mysql的知识点&#xff0c;像索引、优化、主从复制这些很容易就激活了脑海里尘封的知识&#xff0c;但是在mysql锁的这一块真的是忘的一干二净&#xff0c;一点映像都没有&#xff0c;感觉也有点太难理解了&#xff0c;但是还是想把这块给啃下来&#xff0c;于是想通…...

hive3.1.2编译spark3安装包

此安装包是《去破解站长》在公司真实生产环境所使用的安装包。 引言&#xff1a;Hive引擎包括&#xff1a;默认MR、tez、sparkDownload:www.qupojie.com 1、Hive on Spark 1、Hive onSpark&#xff1a;Hive既作为存储元数据又负责SQL的解析优化&#xff0c;语法是HQL语法&…...

伯远生物:告别 “靠天碰运气”,育种进入标记时代

在现代育种科学的演进历程中&#xff0c;从依赖表型选择的传统经验育种&#xff0c;到基于基因型精准筛选的分子育种&#xff0c;技术变革正深刻地重塑着作物改良的路径与效率。分子标记辅助育种技术作为这一变革中的核心技术之一&#xff0c;正以其精准、高效的特点&#xff0…...

别再只盯着USB3.0速度了!深入链路训练状态机(LTSSM),搞懂设备插上后到底经历了什么

USB3.0链路训练状态机&#xff1a;从插入到识别的技术全景解析 当我们将一个USB3.0设备插入电脑时&#xff0c;那个短暂的"识别"过程背后&#xff0c;隐藏着一套精密的数字握手协议。这个看似简单的动作&#xff0c;实际上触发了物理层到协议层的多阶段协同工作&…...

生成式 AI 的成本暗礁:FinOps 如何照亮从试点到规模化的全链路

前言 全球大模型市场正呈现爆发式增长态势。2025年全球大语言模型市场规模约140亿美元&#xff0c;预计到2032年将接近6910亿美元&#xff0c;未来六年年复合增长率&#xff08;CAGR&#xff09;高达74.9%。2026年第一季度&#xff0c;全球LLM月活跃用户已突破38亿人&#xff…...

在OpenClaw项目中配置Taotoken实现多模型Agent的灵活调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw项目中配置Taotoken实现多模型Agent的灵活调用 对于使用OpenClaw框架构建AI Agent的开发者而言&#xff0c;直接接入单一…...

铸件去毛刺,伯朗特机器人带气动打磨头,恒力去除浇口残余

在铸造行业&#xff0c;无论是金属还是非金属铸件&#xff0c;脱模后都会不可避免地产生飞边、毛刺及浇口残余。这些瑕疵不仅影响产品外观&#xff0c;更可能妨碍后续装配&#xff0c;甚至在部件受力时成为应力集中点&#xff0c;影响产品使用寿命与安全性。传统的人工去毛刺作…...

如何快速掌握哔哩下载姬Downkyi:面向新手的完整使用指南

如何快速掌握哔哩下载姬Downkyi&#xff1a;面向新手的完整使用指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&…...

python系列【仅供参考】:mongo4.0.0 加用户认证 motor和pymongo的auth连接

mongo4.0.0 加用户认证 && motor和pymongo的auth连接 mongo4.0.0 加用户认证 摘要 一. 数据库版本 二. 为mongo 添加用户认证 1. 创建超级用户 3. 开启auth 4.重启mongo 5. 添加库用户 三.验证 四.pymongo,motor连接 摘要 正文 mongo4.0.0 加用户认证 摘要 本文介绍…...

从平面到立体:用ImageToSTL将照片变为可触摸的3D模型

从平面到立体&#xff1a;用ImageToSTL将照片变为可触摸的3D模型 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. …...

FPGA QUAD资源优化实战:多Aurora IP核共享时钟与PLL设计

1. 理解FPGA QUAD与Aurora IP核的基础架构 在Xilinx 7系列及后续FPGA架构中&#xff0c;QUAD是高速串行收发器的基本组织单元。每个QUAD包含4个独立的GTP/GTX/GTH通道&#xff08;Channel&#xff09;和1个共享的GT_COMMON模块。这种结构设计既保证了通道独立性&#xff0c;又…...

解决ubuntu中hermes agent连接taotoken自定义供应商的配置问题

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决 Ubuntu 中 Hermes Agent 连接 Taotoken 自定义供应商的配置问题 如果你在 Ubuntu 系统上使用 Hermes Agent&#xff0c;并希望…...