#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int main()
{
int *p1,*p2;
int a[SIZE]={5,2,7,4,8,0,4,7,2,9};//数组如果没有初始化,值不确定,只要有一个元素被赋予值。其它没有被赋予值的均被赋予初值0,
int i=0;
p1=a;//相当于p1=&a[0]; 一维数组的数组名便是这一段内存的首地址。
p2=&a[5];
for(;i<SIZE;i++)
{
if(i%5==0&&i!=0)
{
printf("\n");
}
printf("a[%d]=%d,",i,p1[i]); //或者 *(p1+i)
}
printf("\n");
printf("p2=%d,p1=%d\n",p2,p1);
printf("p2-p1=%d\n",p2-p1);//表示相差的元素个数 如p2=2020 p1=2000 p2-p1=(2020-2010)/每个元素所占的字节数 p2+p1无意义。
//* 与 ++同优先级,
*p1++;//赞同(*p1)++;
*(p2++);//如果p2=2020 p2++相当于 p2+=每个元素所占的字节数.
printf("p1=%d,*p1=%d\n",p1,*p1);
printf("p2=%d,*p2=%d\n",p2,*p2);
return 0;
}
程序运行结果:
a[0]=5,a[1]=2,a[2]=7,a[3]=4,a[4]=8,
a[5]=0,a[6]=4,a[7]=7,a[8]=2,a[9]=9,
p2=2686704,p1=2686684
p2-p1=5
p1=2686688,*p1=2
p2=2686708,*p2=4
Process returned 0 (0x0) execution time : 0.748 s
Press any key to continue.