C语言:指针篇(二)数组指针

先介绍一下概念:数组指针,表示指向数组的指针,或者说指针指向的是数组!

上一篇,介绍了用指针访问、修改普通变量,这篇探索一下数组指针访问、修改数组变量的值。

先上代码:

int main()
{
	double m[2][2];
	double (*p)[2] = m;  
	printf("p = %d,m = %d\n",p ,m); 
	p[1][0] = 1;
	printf("%f\n", m [1][0]);

	system("pause");


	return 0;
}

首先,我们定义一个二维数组,m是二维数组的数组名,也是数组的首地址,相当于二级指针常量

p是个指针变量,指向一个包含2个元素的一维数组,且p的增量以它所指向的一维数组的长度为单位。

比如,*(p+i )= m[i][0] 。

所以不妨这么理解,二维数组m,本质上,以一维数组为单位,由2个一维数组组成。

double (*p)[2] = m; 

这条语句,就是让指针指向一维数组空间,并把数组的首地址赋给p,这时p就等价于m,所以

p[1][0] = 1;

等价于

m[1][0] = 1;
打印m[1][0],发现该元素值确实更新为1。

注:还有一个概念指针数组,这家伙和数组指针,经常会让人傻傻分不清楚,后面会继续介绍,这俩怎么区分)

猜你喜欢

转载自blog.csdn.net/lily_9/article/details/80700987