C语言 二维数组的行列区别

#include <stdio.h>
#include <stdlib.h>
/*=============================================================*/
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;
    
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值