&a2 &a2+1 相差48 &a2[0] &a2[0]+1 相差16 a2 a2+1 相差16 a[0] a[0]+1 相差4#include<stdio.h>void main(){ int a2[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};int *pa2=a2[0]; printf("a2[0]:%u, a2[0]+1=%u,++pa2:%u\n",a2[0],a2[0]+1,+

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 03:16:00

&a2 &a2+1 相差48 &a2[0] &a2[0]+1 相差16 a2 a2+1 相差16 a[0] a[0]+1 相差4#include<stdio.h>void main(){ int a2[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};int *pa2=a2[0]; printf("a2[0]:%u, a2[0]+1=%u,++pa2:%u\n",a2[0],a2[0]+1,+
&a2 &a2+1 相差48 &a2[0] &a2[0]+1 相差16 a2 a2+1 相差16 a[0] a[0]+1 相差4
#include<stdio.h>
void main()
{
 int a2[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};int *pa2=a2[0];
 printf("a2[0]:%u, a2[0]+1=%u,++pa2:%u\n",a2[0],a2[0]+1,++pa2);
 printf("a2:%u,    a2+1=%u\n",a2,a2+1); 
 printf("&a2[0]:%u,&a2[0]+1=%u\n",&a2[0],&a2[0]+1);
 printf("&a2:%u,&a2+1=%u\n",&a2,&a2+1);
}

&a2         &a2+1        相差48

&a2[0]     &a2[0]+1    相差16
a2           a2+1          相差16
a[0]         a[0]+1        相差4
为什么?

&a2 &a2+1 相差48 &a2[0] &a2[0]+1 相差16 a2 a2+1 相差16 a[0] a[0]+1 相差4#include<stdio.h>void main(){ int a2[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};int *pa2=a2[0]; printf("a2[0]:%u, a2[0]+1=%u,++pa2:%u\n",a2[0],a2[0]+1,+
一个指针p+1与p的差值的字节数,等于指针指向的数据类型的大小.
&a2         &a2+1        相差48    // a2类型是int[3][4]的二维数据,sizeof(a2) = 48; 所以&a2+1与&a2相差48
&a2[0]     &a2[0]+1    相差16 // a2[0]的类型是int[4]的数组,sizeof(a2[0]) = 16; 所以&a2[0]+1与&a2[0]相差16
a2           a2+1          相差16    // *a2的类型是int[4],同上
a[0]         a[0]+1        相差4    // *a[0]的类型是int,sizeof(*a[0]) = 4,所以a[0]+1与a[0]的字节数相关4