数组指针

设有整型二维数组


int a[3][4] = { {3,2,1,5}, {11,22,33,5}, {14,15,15,3} };


比如A的首地址为1000  C语言允许把一个二维数组分解为多个一维数组来处理 因此数组a可分解为三个一维数组,即a[0],a[1],a[2]。每一个一维数组又含有四个元素。例如a[0]数组,含有a[0][0],a[0][1],a[0][2],a[0][3]四个元素:a是二维数组名,也是二维数组0行的首地址,等于1000。a[0]是第一个一维数组的数组名和首地址,因此也为1000。*(a+0)或*a是与a[0]等效的

#define PF "%d,%d,%d,%d,%d,\n"

void  main()
{
static int a[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
printf(PF, a, *a, a[0], &a[0], &a[0][0]);
printf(PF, a + 1, *(a + 1), a[1], &a[1], &a[1][0]); 
printf(PF, a + 2, *(a + 2), a[2], &a[2], &a[2][0]);
printf("%d,%d\n", a[1] + 1, *(a + 1) + 1); 
printf("%d,%d\n", *(a[1] + 1), *(*(a + 1) + 1));



多维数组的指针变量


把二维数组a 分解为一维数组a[0],a[1],a[2]之后,设p为指向二维数组的指针变量。

int a[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
int(*p)[4];//如果希望在操作指针的时候和操作二维数组一样那么定义一个二维数组的指针 4代表二维数组的每一行的长度 
p = a;//直接把一个一位数组给赋值进去

                   printf("%d",*(*(p+2)+2));//这样的话就 p代表的还是一个二位唯指针

   注意如果用  int *p; 来存储的话 那么 p代表的就是一位数组的首地址而不再代表二维数组 











system("pause");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值