&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,+
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/31 23:03:29
&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