您的位置:首页 > 资讯 > 体育新闻 > 正文

用指针访问二维数组

作者:菜叶 时间:2023-01-12 11:11

简介:文章目录前言用指针访问二位数组通过指针访问二维数组的不同形式==*a和a 是两个完全不同的概念:====为什么不能用

【菜叶百科解读】

用指针访问二位数组

通过指针访问二维数组的不同形式

==*a和a 是两个完全不同的概念:==

==为什么不能用*p=a==

二维数组元素的访问的四种方式:

1、通过下标访问数组元素

2、通过数组首地址访问数组元素

3、通过指针访问数组元素(以一维数组的角度“看待”二维数组”)

4、通过指针访问数组(以二维数组的角度“看待”数组)

指向字符串的二维数组

实例:学生成绩

思考 (如果看不懂,请回退往前再看)

二维数组作为函数的参数

1、以一维数组的角度“看待”二维数组

2、以二维数组的角度“看待”一维数组

课后练习

答案

方法一:用二维数组的方式看待程序:

方法二: 用一维数组的方式看待程序:

前言

如何理解二维数组?我们以二维的方式理解二维数组,他在存储时却是一维的。

用指针访问二位数组

例:int a[3] [4] = {1,3,5,7,9,11,13,15,17,19,21,23};

a[0] [0] a[0] [1] a[0] [2] a[0] [3]
a[1] [0]   a[1] [1]   a[1] [2]   a[1] [3]  
a[2] [0]   a[2] [1]   a[2] [2]   a[2] [3]  

我们想象的二维数组的存储方式:3行4列

a[0] [0]
a[0] [1]  
a[0] [2]  
a[0] [3]  
a[1] [0]  
a[1] [1]  
a[1] [2]  
a[1] [3]  
a[2] [0]  
a[2] [1]  
a[2] [2]  
a[2] [3]  

我们认为前四个是一个以a[0]为数组名的一位数组,共有四个int元素

中间四个是名为a[1]的一维数组

最后四个是名为a[2]的一维数组

通过指针访问二维数组的不同形式

*a和a 是两个完全不同的概念:

a看待这个数组认为这个数组是一维数组,它自身加一会转向下一个一维数组即a+1

*a指向的是每个元素都是整数的一维数组所以就认为 *a+0 指向的就是整数,加一就是下一个整数

为什么不能用*p=a int x,*p; double y,*q; p=&x; q=&y; p=q;//是错的 //p是指向四个字节为存储单元的地址 //q是指向八个字节为存储单元的地址 //两者不可以等价 二维数组元素的访问的四种方式: 1、通过下标访问数组元素 int a[3][4]; for (int i=0; i<3; i++) for (int j=0; j<4; j++) a[i][j] = i+j; int a[3][4]; for (int i=0; i<3; i++) for (int j=0; j<4 ;j++) *(*(a+i)+j)=i+j; 2、通过数组首地址访问数组元素

对于二维数组元素a[i] [j], “【】”实际上是变址运算符,即将元素a[i] [j]的存储地址转换为a[i] + j。

3、通过指针访问数组元素(以一维数组的角度“看待”二维数组”) int a[3][4]; int *p=&a[0][0]; for (int i=0; i<3; i++) for(int j=0; j<4; j++) *(p++) = i+j; //相当于*p=i+j;p++;

声明:本文内容仅代表作者个人观点,与本站立场无关。如有内容侵犯您的合法权益,请及时与我们联系,我们将第一时间安排处理

相关推荐
热门精选
返回首页版权声明网站地图返回顶部

本站为非赢利性站点,为书友提供一个分享与交流的平台。本站所收录的作品、社区话题、用户评论、用户上传内容或图片等均属用户个人行为。如前述内容侵害您的权益,欢迎举报投诉,一经核实,立即删除,本站不承担任何责任

菜科网-日常生活百科知识大全,是大家的选择!

鄂ICP备17021050号-10