二维数组及指针

一个数组的元素值为指针则是指针数组。

指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。

指针数组说明的一般形式为:

  类型说明符 *数组名[数组长度]

  其中类型说明符为指针值所指向的变量的类型。

  例如: int *pa[3]

    表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。

v不要把&a[i]简单的理解为a[i]的物理地址,因为并不存在a[i]这个变量。它只是一种地址的计算方法,能得到第i行的地址。
v&a[i]a[i]的值是一样的,但它的含义却不同。 &a[i]a+i指向行,而a[i]或*(a+i)指向列。当下标j=0时,&a[i]a[i]+j的值相等。*(a+i)只是a[i]的另一种表示形式。在二维数组中,a+i=a[i]=*(a+i)=&a[i]=&a[i][0]即它们的地址值是相等的。 
uint  a[5][10]    int   (*p)[5];

维数组名是一个指向有10个元素的一维数组的指针常量

up=a+i  使 p指向二维数组的第i

*(*(p+i)+j) Ûa[i][j]

u维数组形参实际上是一维数组指针变量,                 

    即   int  x[ ][10]  Ûint  (*x)[10]

变量定义(不是形参)时两者不等统只给p分配能保存一个指针值的内存区(一般2字节);而a分配2*5*10字节的内存区


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值