平度推广网站建设有哪些网站可以免费发布广告
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) ;//指针强转
}
}