参考书籍《C程序设计(第四版)》谭浩强
把变量名抹去就是他们的类型了
当指针遇上二维数组时,就常常老鼠,老虎,傻傻分不清楚了。小zz根据教材总结了以下几点:
例如:int a[3][4]={.......}
1. a[i] :指向i行0列元素地址;
a[i]+j:指向i行j列元素地址;
2. &a[i]:指向i行首地址;
&a[i]+j:指向i+j行首地址;
可用**(&a[i]+j)取出该地址存储的元素;
注:涉及到的优先级排序:a[] > *a(解引用) = &a(取址) > a+b
#include<stdio.h>
int main()
{
int a[3][4]={{1,2,3,10},
{4,5,6,11},
{7,8,9,12}
};
printf("%d\n",**(&a[1]+1));
return 0;
}
运行结果如下:
3. a+i:指向i行首地址;
4. *(a+i) :指向i行0列元素地址;
5. *(a+i)+j :指向i行j列元素地址;