array and pointer in c

//===============================================================================
// The 1-dimension

int a[3]
//===============================================================================
                    the type of                 size of
expression          expression                  1 span (in byte)
---------------------------------------------------------------------------------
&a                  int (*)[3]                  3 * sizof(int)
&a[0]               int *                       sizeof(int)

a                   int *                       sizeof(int)
a[0]                int                         <N/A>
---------------------------------------------------------------------------------

//===============================================================================
// The 2-demensions

int a[3][2]
//===============================================================================

                the type of         size of
expression      expression          1 span (in byte)
---------------------------------------------------------------------------------
&a              int (*)[3][2]       3 * 2 * sizeof(int)
&a[0]           int (*)[2]          2 * sizeof(int)
&a[0][0]        int *               sizeof(int)


a               int (*)[2]          2 *  sizeof(int)   // a === &(a[0])

a[0]            int *               sizeof(int)        //a[0] === &(a[0][0])

a[0][0]         int                 <N/A>


//Conclusion: "a" is equal to "&(a[0])"

//Conclusion: "a[0]" is equal to "&(a[0][0])"
//===============================================================================
// The N-dimensions
// Defined a array in type Type, and with multiple dimensions
// Type arr[D(1)][D(2)]...[D(N-1)][D(N)]
// 1 < k < N
//===============================================================================

expression                 equal to     =               the type of expression
---------------------------------------------------------------------------------
&arr                                                    Type (*)[D(1)]...[D(N)]
&arr[D(1)]                                              Type (*)[D(2)]...[D(N)]
&arr[D(1)]...[D(k)]                                     Type (*)[D(k+1)]...[D(N)]
&arr[D(1)]....[D(N)]                                    Type (*)


arr                       &(arr[0])                     Type (*)[D(2)]...[D(N)]  

arr[D(1)]                 &(arr[D(1)][0)                Type (*)[D(3)]...[D(N)]
arr[D(1)]...[D(k)]        &(arr[D(1)]...[D(k)][0])      Type (*)[D(k+2)]...[D(N)]
arr[D(1)]....[D(N)]                                     Type                     

---------------------------------------------------------------------------------

Conclusion: "arr[D(1)]...[D(k)]" (1<k<N) point to the address of first element of itself. is equal to "&(arr[D(1)]...[D(k)][0]"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值