您的位置:首页 > 其它

关于数组和指针:二维数组和指向数组的指针

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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: