C语⾔⼆维数组的⾏列区别
#include <stdio.h>
#include <stdlib.h>
c语言二维数组表示方法/*=============================================================*/
int main()
{
int b[]={1,2,3,4};
printf("b=%d,*b=%d\n",b,*b);//&,1
printf("-------------------------------------------\n");
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int n=sizeof(a[0][0]);
printf("数组a⼀共有12个元素,包括3⾏4列,每⾏4个元素,每列3个元素\n");
printf("a=%d,*a=%d\n",a,*a);//&,&
printf("a size=%d,*a size=%d\n",sizeof(a),sizeof(*a));//48,16
printf("a包含的元素个数是:%d,*a包含元素个数是:%d\n",sizeof(a)/n,sizeof(*a)/n);//12,4
//a的⼤⼩与数组⼤⼩相同,*a代表了第0⾏的⾸地址,包含四个元素
printf("-------------------------------------------\n");
printf("a[0]=%d,*(a+0)=%d\n",a[0],*(a+0));//&,&
printf("a[0] size=%d,*(a+0)=%d\n",sizeof(a[0]),sizeof(*(a+0)));//16,16
printf("a[0]包含的元素个数是:%d,*(a+0)包含元素个数是:%d\n",sizeof(a[0])/n,sizeof(*(a+0))/n);//4,4
//a[0]与*(a+0)等价代表第0⾏的⾸地址,包含4个元素
printf("-------------------------------------------\n");
printf("&a[0]=%d,&a[0][0]=%d\n",&a[0],&a[0][0]);//&,&
printf("&a[0] size=%d,&a[0][0] size=%d\n",sizeof(&a[0]),sizeof(&a[0][0]));//4,4
printf("&a[0]包含的元素个数是:%d,&a[0][0]包含元素个数是:%d\n",sizeof(&a[0])/n,sizeof(&a[0][0])/n);//1,1
//&a[0]代表第0⾏0列的地址,&a[0] [0]也是如此
printf("-------------------------------------------\n");
printf("a[1]=%d,a+1=%d\n",a[1],a+1);//&+16,&+16
printf("a[1] size=%d,a+1=%d\n",sizeof(a[1]),sizeof(a+1));//16,4
printf("a[1]包含的元素个数是:%d,a+1包含元素个数是:%d\n",sizeof(a[1])/n,sizeof(a+1)/n);//4,1
//a[1]代表第1⾏元素⾸地址,包含4个元素,⽽a+1也应代表第1⾏的⾸地址,
printf("-------------------------------------------\n");
printf("&a[1][0]=%d,*(a+1)+0=%d\n",&a[1][0],*(a+1)+0);//&+16,&+16
printf("&a[1][0] size=%d,*(a+1)+0 size=%d\n",sizeof(&a[1][0]),sizeof(*(a+1)+0));//4,4
printf("&a[1][0]包含的元素个数是:%d,*(a+1)+0)包含元素个数是:%d\n",sizeof(&a[1][0])/n,sizeof(*(a+1)+0)/n);//1,1 //&a[1][0]代表第1⾏第0列元素地址,包含1个元素,⽽*(a+1)+0也应代表第1⾏第0列元素的地址,包含1个元素
printf("-------------------------------------------\n");
printf("a[2]=%d,*(a+2)=%d\n",a[2],*(a+2));//&+32,&+32
printf("a[2] size=%d,*(a+2) size=%d\n",sizeof(a[2]),sizeof(*(a+2)));//16,16
printf("a[2]包含的元素个数是:%d,*(a+2)包含元素个数是:%d\n",sizeof(a[2])/n,sizeof(*(a+2))/n);//4,4
//a[2]代表第2⾏元素⾸地址,包含4个元素,⽽*(a+2)也代表第2⾏的⾸地址,包含4个元素
printf("-------------------------------------------\n");
printf("&a[2]=%d,a+2=%d\n",&a[2],a+2);//&+32,&+32
printf("&a[2] size=%d,a+2 size=%d\n",sizeof(&a[2]),sizeof(a+2));//4,4
printf("&a[2]包含的元素个数是:%d,a+2包含元素个数是:%d\n",sizeof(&a[2])/n,sizeof(a+2)/n);//1,1
//&a[2]代表第2⾏元素⾸地址
printf("-------------------------------------------\n");
printf("a[1][0]=%d,*(*(a+1)+0)=%d\n",a[1][0],*(*(a+1)+0));//9,9
printf("a[1][0] size=%d,*(*(a+1)+0) size=%d\n",sizeof(a[1][0]),sizeof(*(*(a+1)+0)));//4,4
printf("a[1][0]包含的元素个数是:%d,*(*(a+1)+0))包含元素个数是:%d\n",sizeof(a[1][0])/n,sizeof(*(*(a+1)+0))/n);//1,1 printf("-------------------------------------------\n");
system("PAUSE");
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论