二维数组的鞍点,用到了指针的知识,阅读了三个小练习之后可以看看强化一下。
- 小练习1
int *ar[10]; //正确定义方式 int* (*p)[10] = &ar; //数组指针 int* (&a)[10] = ar; //引用 int **s = ar; //指向数组元素的指针
- 小练习2
int ar[3][4]; int(*p)[3][4] = &ar; //指向整个二维数组的指针 int(&a)[3][4] = ar; //引用整个二维数组 int(*s)[4] = ar; //指向二维数组首元素(一维数组)
- 小练习3
int arr[5][2] = { 0,1,2,3,4,5,6,7,8,9 }; int *s = (int *)&arr[0][1]; //将地址进行强转 int(*p)[2] = &arr[0]; printf("%d, %d", s[2], p[1][3]);
结果是3、5。
扫描二维码关注公众号,回复:
1762479 查看本文章
小总结:直接使用数组名会发生退化(下退一级),指向其首元素的地址;如果不允许发生退化,必须要使用&。