网站首页 > 技术文章 正文
一、数组的存储与访问
小结:
a[i]的地址是: &a[i] <=> a+i
a[i]的内容是: a[i] <=> *(a+i)
二、指向一维数组的指针
需要定义一个基类型与数组元素数据类型相同的指针变量。
#include<stdio.h>
#define N 10
void main( )
{ int a[N],i;int *p=a; 下标法
for(i=0;i<N;i++)
scanf("%d",a+i); 地址法
for(i=0;i<N;i++)
printf("%d",p[i]); 指针变量下标运算法
}
方法二:指针变量法 可以加下群466572167(群内有各种项目学习资料)
#include<stdio.h>
#define N 10
void main( )
{
int a[N],*p;
for(p=a;p<a+N;p++)
scanf("%d",p);
for(p=a;p<a+N;p++)
printf("%d",*p);
}
思考:每次p++执行的是什么操作?
p将指向数组中下一个元素。
是否可以进行a++或a--这样的运算?
a为数组名,代表数组的首地址,它是一个常量,不能进行上述运算。
利用指针,为数组从键盘输入值,并输出。
习题
1、若有以下说明和语句,且i>=0&&i<10,则下面(B)是对数组元素的错误引用
int a[]={1,2,3,4,5,6,7,8,9,0},*p, i;
p=a;
A、*(a+i) B、p+i C、a[p-a] D、*(&a[i])
2、设变量定义为“int a[4]={1,3,7,9},*p=a+2;
则*p的值为__7___。
三、二维数组的存储与访问 可以加下群466572167(群内有各种项目学习资料)
二维数组的访问:
在C语言中,将二维数组看成是由若干个一维数组构成的一维数组。如:int a[3][4],定义了一个二维数组,逻辑上把它看成3行4列的矩阵:
0列 1列 2列 3列
0行 a[0][0] a[0][1] a[0][2] a[0][3]
1行 a[1][0] a[1][1] a[1][2] a[1][3]
2行 a[2][0] a[2][1] a[2][2] a[2][3]
int a[3][4];
行指针(地址值):a+i <=> &a[i]
列指针(地址值):*(a+i) +j <=> a[i]+j
元素a[i][j] 的值:a[i][j] <=> *(a[i]+j) <=> *(*(a+i) +j)
int a[3][4],*p=a[0];设数组a的首地址值为3000,则:
a+1的结果为:3008
a[0]+1的结果为:3002
&a[0][0]+1 的结果为:3002
p+1的结果为:3002
例: 可以加下群466572167(群内有各种项目学习资料)
输入输出二维数组中的所有元素。 地址法
#define M 4
#define N 5
void main( )
{ int a[M][N],i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",a[i]+j);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
printf("%d",*(a[i]+j));
printf("\n");
}
方法二: 指针变量法
#define M 4
#define N 5
void main( )
{ int a[M][N],i,*p;
for(p=&a[0][0];p<&a[M-1][N-1];p++)
scanf("%d",p);
for(p=&a[0][0];p<&a[M-1][N-1];p++)
printf("%d",*p);
}
1、下列_D_形式不表示二维数组a的第1行第2列的元素地址
A、a[1]+2 B、*(a+1)+2
C、&a[1][2] D、*(a[1]+2)
2、数组定义为int a[4][5],引用*(a+1)+2表示 B
A、a[1][0]+2 B、a数组第1行第2列元素地址
C、a[0][1]+2 D、a数组第1行第2列元素的值
小编今天就暂时把指针和数组的介绍以及用法就写到这,下一篇继续更新,字符串与指针,希望对刚接触C语言的伙伴们有所帮助哈,加油,坚持学好编程
- 上一篇: 小白也能懂的C语言中的指针与数组技巧
- 下一篇: C语言基础之数组(c语言 数组)
猜你喜欢
- 2024-09-23 简说C语言指针数组和数组指针(c语言指针和数组的关系)
- 2024-09-23 每天写点笔记——C语言笔记之数组
- 2024-09-23 一文掌握C语言数组使用(c语言中数组的用法)
- 2024-09-23 指针和数组:C语言中的两个利器(c语言中指针和数组的关系)
- 2024-09-23 第四章: 数组(数组csdn)
- 2024-09-23 数组(下):数据结构中的数组和编程语言中的数组的区别
- 2024-09-23 一题吃透C语言指针与数组,一招助你理解C语言难点指针的运算
- 2024-09-23 C语言,结构体数组的定义和引用(c语言结构体数组怎么定义)
- 2024-09-23 C语言二维数组,如何定义?(c语言中二维数组的定义方式)
- 2024-09-23 C语言:数据结构-数组的定义、逻辑结构和特点
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 571℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 512℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 468℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 448℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 445℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)