二维数组的各种sizeof问题

来源:互联网 发布:小米主题破解软件 编辑:程序博客网 时间:2024/05/17 16:02
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()  
{      
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};     
int n=sizeof(a[0][0]);        
printf("a=0x%x,*a=0x%x\n",a,*a);     
printf("a size=%d,*a size=%d\n",sizeof(a),sizeof(*a));     

printf("-------------------------------------------\n");  

printf("a[0]=0x%x,*(a+0)=0x%x\n",a[0],*(a+0));      
printf("a[0] size=%d,*(a+0)=%d\n",sizeof(a[0]),sizeof(*(a+0))); 
printf("-------------------------------------------\n");      


printf("&a[0]=0x%x,&a[0][0]=0x%x\n",&a[0],&a[0][0]);     
printf("&a[0] size=%d,&a[0][0] size=%d\n",sizeof(&a[0]),sizeof(&a[0][0]));     
printf("-------------------------------------------\n");     


printf("a[1]=0x%x,a+1=0x%x\n",a[1],a+1);      
printf("a[1] size=%d,a+1=%d\n",sizeof(a[1]),sizeof(a+1));   
printf("-------------------------------------------\n");   

printf("&a[1][0]=0x%x,*(a+1)+0=0x%x\n",&a[1][0],*(a+1)+0);      
printf("&a[1][0] size=%d,*(a+1)+0 size=%d\n",sizeof(&a[1][0]),sizeof(*(a+1)+0));     
printf("-------------------------------------------\n");     


printf("a[2]=0x%x,*(a+2)=0x%x\n",a[2],*(a+2));      
printf("a[2] size=%d,*(a+2) size=%d\n",sizeof(a[2]),sizeof(*(a+2)));     
printf("--------------------------------------- ---\n");     


printf("&a[2]=0x%x,a+2=0x%x\n",&a[2],a+2);      
printf("&a[2] size=%d,a+2 size=%d\n",sizeof(&a[2]),sizeof(a+2));     
printf("-------------------------------------------\n");   


printf("a[1][0]=0x%x,*(*(a+1)+0)=0x%x\n",a[1][0],*(*(a+1)+0));      
printf("a[1][0] size=%d,*(*(a+1)+0) size=%d\n",sizeof(a[1][0]),sizeof(*(*(a+1)+0)));     
printf("-------------------------------------------\n");    


return 0;      
}


1 0