当前位置: 首页 > 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) ;//指针强转

}

}

http://www.lryc.cn/news/489018.html

相关文章:

  • 如何理解Lua 使用虚拟堆栈
  • 【倍数问题——同余系】
  • 「San」监听DOM变化的方法
  • 如何选择服务器
  • 嵌入式驱动面试总结
  • Uniapp 简单配置鸿蒙
  • 线程池的实现与应用
  • 基于Java Springboot单位考勤系统
  • 近源渗透|HID ATTACK从0到1
  • 【linux】插入新硬盘如何配置:格式化、分区、自动挂载(Ubuntu)
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-block.py
  • 代码随想录算法训练营第五十三天|Day53 图论
  • LeetCode:203.移除链表元素
  • 知识见闻 - 数学: 均方根 Root Mean Square
  • 机器硬件调优
  • 如何更改手机GPS定位
  • HarmonyOS(57) UI性能优化
  • Mysql的加锁情况详解
  • hive3.1.2编译spark3安装包
  • 网络安全,文明上网(1)享科技,提素养
  • ESP32 烧录问题
  • CnosDB 实时流式计算:优化时序数据处理与降采样解决方案
  • ApiChain 从迭代测试用例到项目回归测试 核心使用教程
  • 数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall
  • django从入门到实战(四)——模型与数据库
  • LeetCode:1008. 前序遍历构造二叉搜索树
  • gdb - 调试工具 - 入门 (一)
  • Swift内存访问冲突
  • 深入理解Spring(三)
  • TB6612电机驱动模块使用指南