免费开源建站系统源码,佛山关键词排名工具,国内优秀公司网站,彩视音乐相册制作下载安装目录
一#xff1a;回顾多维数组地址知识
二#xff1a;二维数组的有关指针
三#xff1a;指向数组元素的指针变量
四#xff1a;用指向数组的指针作为函数参数 首先简单来讲#xff0c;指针变量可以指向一维数组中的元素#xff0c;也可以指向多维数组中的元素。下面… 目录
一回顾多维数组地址知识
二二维数组的有关指针
三指向数组元素的指针变量
四用指向数组的指针作为函数参数 首先简单来讲指针变量可以指向一维数组中的元素也可以指向多维数组中的元素。下面将进行详细介绍。
一回顾多维数组地址知识
以二维数组为例
int a[3][3]{{1,2,3},{4,5,6},{7,8,9}}; 1.1
a是数组名a数组包括3行3列可以理解为有三个行元素而且每个行元素又是一个一维数组其实数组在内存中真实存在的状态是连续的并不分行列但为了我们更好的理解才想象成了有行有列的。即二维数组是由一维数组组成的如 a数组是由3个一维数组组成的。 1.2
还是以上面为例a代表二维数组首元素地址首行起始地址那么 a1代表什么呢
a1 其实代表第二行首元素地址也就是a[1] 的地址。这里的加一是表示越过这一行的地址。如果说 a 的地址为1000则 a1 的地址为10004*31012 第0行有3个整形数据。 以此类推a2 也就是a[2] 的地址也就是10004*61024
那么第0行第1列的元素地址如何来表示呢
因为从上可得知a[0]是一维数组名所以一维数组名1不就是该一维数组中第一个元素么。这里的加一是表示越过这一个数据的地址写为a[0]1 地址值也就是 100041004 1个整形据。 以此类推a[0]0 , a[0]1 , a[0]2 等就代表着 a[0][0] , a[0][1] , a[0][2] 的元素地址。
二二维数组的有关指针
如下表所示
表示形式含义值a二维数组名即首元素地址0行起始地址2000 a[0] *(a0) *a 第0行第0列元素地址2000 a1 a[1] 第1行元素起始地址2012 a[1] *(a1 第1行第0列元素a[1][0]地址2012 a[1]2 *(a1)2 a[1][2] 第1行第2列元素a[1][2]地址2020 *(a[1]2) *(*(a12 a[1][2] 第1行第2列元素a[1][2]值元素值总结记住最重要的一点 a[i] 与 *(ai)是一样的。
三指向数组元素的指针变量 如
#include stdio.hint main()
{int a[3][3] { 1,2,3,4,5,6,7,8,9 };int* p;p a[0];for (p; p a[0] 9; p){printf(%5d, *p);if( p[0] % 3 0)printf(\n);}return 0;
}结果 1 2 34 5 67 8 9D:\VS\Project4\x64\Debug\Project4.exe (进程 1240)已退出代码为 0。
按任意键关闭此窗口. . . 分析
p是一个指针变量类型为 int * 型其可以指向一般的整型变量也可以指向整形的数组元素。
通过指针的方式将二维数组的值来依次输出。用指向元素的指针变量输出二维数组各元素值。
四用指向数组的指针作为函数参数 作用用指针变量作形参用来接受实参数组名传递来的地址。 如
#include stdio.h
void test(int* p)
{int* a p;for (p; p a 9; p){printf(%5d, *p);if (p[0] % 3 0)printf(\n);}
}
int main()
{int a[3][3] { 1,2,3,4,5,6,7,8,9 };int* p;p a[0];test(p);return 0;
} 结果 1 2 34 5 67 8 9D:\VS\Project4\x64\Debug\Project4.exe (进程 13920)已退出代码为 0。
按任意键关闭此窗口. . . 分析当p作为实参进行传递时一定要保证形参的类型与实参类型一致。
用此种方法一样可以打印出来。指向指针变量的指针变量诠释了指向数组的指针作为函数参数。