二维数组(数组指针的存储形式)

原创 2018年04月17日 16:44:31

首先,原理为一维数组的数组名表示数组首元素的地址

看以下代码:

#include<stdio.h>

//void Show(int **brr)//error,如果传的是二维数组,则该方法是错误的,说明二维数组名并不是二级指针
//void Show(int brr[3][4])//这样的话对二维数组过于限制,将行列都给出,不便于代码的重用,不好
void Show(int (*brr)[4])//数组指针,用括号将*也括入,*brr==arr,将二维数组当作一维数组看,所以把*brr括入。右边带上列的数量。
{
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<4;j++)
		{
			printf("%d",brr[i][j]);
		}
		printf("\n");
	}
}

//二维数组初始化的不同方式
int main()
{
	int a = 10;
	int arr[4] = {1,2,3,4};
	int brr[3][4];
	int crr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	int drr[3][4] = {1,2,3,4,5,6,7,8,9};//行优先
	int err[][4] = {1,2,3,4,5,6};
	brr[2][1] = 1;
	Show(crr);//
	return 0;
}
其中,Show()函数中的数组指针引用方式说明brr指针是一个指向4个单元的一维数组的指针,类型为int。

Windows Server 2012 存储和文件管理

-
  • 1970年01月01日 08:00

关于用指针方式访问二维数组的问题

关于用指针方式访问二维数组的问题首先,以二维数组a[2][3]为例,a是由数组a[0]、a[1]组成的一维数组,因此,数组名a可以看作是a[0]、a[1]的首地址,即a==&a[0]。 然后,对于二维...
  • Gao__Xiong
  • Gao__Xiong
  • 2015-11-28 17:42:19
  • 3094

指向二维数组的指针定义方式

 看了一些资料,指向二维数组的指针定义方式并不是直接定义指针的指针 int   a[3][6]; int **p=a;        像这样定义是错误的 因为a代表着除了第一列以外的列数的...
  • yangzhao0001
  • yangzhao0001
  • 2016-07-21 15:08:21
  • 498

关于二维数组和指针与传参

假设有一个二维数组a[M][N],要把它作为参数传给一个函数sub()
  • jnbbwyth
  • jnbbwyth
  • 2015-07-18 18:27:27
  • 3832

指针数组,数组指针与二维数组剖析

int *p[3]与int (*p)[3]的区别 *p[3]这个是一个指针数组,它所代表的意思是数组中的每一个元素都是一个指针变量,而(*p)[3],p是一个指针变量,表示指向一个含有3个整型元素的一...
  • qiumingjian
  • qiumingjian
  • 2015-05-06 17:24:45
  • 3947

二维数组及多维数组的指针总结

数组指针和指针数组的问题
  • pipinuan
  • pipinuan
  • 2016-11-16 23:49:56
  • 1312

17、指针与二维数组--二维数组元素利用指针的三种输出方法

二维数组元素利用指针的三种输出方法
  • Guo_Xiaoxi
  • Guo_Xiaoxi
  • 2017-02-23 19:15:49
  • 740

“作为函数参数的二维数组”即“怎么给函数传二维数组的指针”

刚才在百度知道看到了这个问题,回答了下,这个问题很好,总结一下。 声明一个二维数组 int matrix[100][100]; 当把二维数组作为参数传递的时候很多人可能一上来就这样写intf...
  • MichealTX
  • MichealTX
  • 2012-01-03 18:54:13
  • 9270

指针数组和数组指针分别是如何指向二维数组的

//注意指针数组和数组指针分别是如何指向二维数组的 #include main() {     static int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};...
  • Sayesan
  • Sayesan
  • 2014-09-02 10:22:49
  • 3830

二维数组名的本质是数组指针

#include int main() { int a[10] = {};//a是数组首元素的地址 int *p = a;//步长为4 int(*q)[10] = &a;//步长为4*10 ...
  • u014338577
  • u014338577
  • 2015-12-30 10:00:01
  • 534
收藏助手
不良信息举报
您举报文章:二维数组(数组指针的存储形式)
举报原因:
原因补充:

(最多只允许输入30个字)