C语言数组名的指针保存



数组名的指针保存


定义一个指针,指向int a[10]的首地址:


int *p=a;


对于int类型的数组和指针来说,它们读取的方法是一样的,都是以四个字节为单位进行读取。所以这样的赋值方法是正确的。


定义一个指针,指向int b[5][6]的首地址


我们是不可以使用int **p=b这样的二维指针来赋值。我们先来分析一下结果为什么不对。二维数组读取的时候是一行一行的读取,而二维指针读取的是线性表。当我们定义一个char *p的时候,我们明白了读取的方式就是char类型。但是现在的需求不一样了,不再是一个简单的char类型读取方式了。


我们知道int a[6]; a就是一次读取6个int类型,所以我们现在需要指针也能够像这样读取,用指针变量去代替这个普通变量。就有了下面的定义:


int (*p)[6]=b;


[]的优先级高于*,在我们加了一个括号之后,定义了一个指向二维数组的指针p,p指向的是二维数组的首地址。P[1]指向的就是第二行的首地址。现在p的单位,一次读取6个int类型的数据。P[1][1]指向的就是第二行第二列的数据。前面的p[1]返回第一行的首地址,后面的[1]代表再移动一个单位,这个就是int类型的大小,移动4个单位。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

秋招大聚惠,豪华礼包你领了吗?

客服热线 400-862-8862

回到顶部