关于数组和指针:二维数组和指向数组的指针
2009-10-12 15:57
316 查看
#include <stdio.h> void main(){ int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int *p,(*pt)[4],i,j; p=a[0]; pt=a; for(j=0,i=0;i<4;i++,j++){ printf("p is %d,and it's address is,pt is %d/n",*p++,*((*pt)+j)); } printf("p's address is %d,pt's address is %d/n",p,pt); printf("a[0]'s address is %d,a's address is %d/n",a[0],a); p=a[0];p++; pt=a;pt++; printf("when they add one ,the address are %d, and %d/n",p,pt); // p++; // pt++; }
通过这段代码,可以看出,对于二维数组,要想获取其首地址(例子中的a,不是a[0])必须用指向数组的指针变量,如果p=a,则会报错。
而a[0],代表的是第0行0列的地址(a代表0行的地址),这就可以区分,在地址加1时,a会加16,而a[0]只会加4。
注:
int型占4个字节在计算机内存中,一个字节8位。
printf("%d,%d,%d",sizeof(int),sizeof(short),sizeof(long));
相关文章推荐
- 每日一C,指向一维、二维数组的指针及数组作为函数形参的思考(二)
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 关于指针数组、数组指针、及函数指针和指向函数指针数组的指针的一点理解
- 关于二维数组和一维指针数组的区别
- C中关于一位数组与指针和二维数组与指针的一点总结
- 关于指向数组的指针
- 直观理解C语言中指向一位数组与二维数组的指针
- 指向数组的指针与动态二维数组
- 关于指针的一些知识,记多维数组指针、指针数组、指针的指针和指向函数的指针
- 关于二维数组和指向指针的指针
- 二维数组,指针数组,指向指针数组的指针的应用练习〈一〉
- C语言中二维数组、二维指针、指向指针的数组、指向数组的指针
- 一道关于二维数组和指针数组的C语言笔试题目
- [指针二]指向一维数组、二维数组的指针使用
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 指针数组和数组指针分别是如何指向二维数组的
- 二维数组做函数参数,如何将三维数组降为二维数组,指向数组的指针的使用
- 关于用二维数组调用函数的寻址(多维数组和指针)
- 指针(2):关于数组指针和指向数组指针的指针及其new
- C语言中指向一位数组与二维数组的指针