#include <stdio.h>
void pointer_self_add(){
int arr[3] = {2,7,8};
int *p;
int j;
p = arr;
/*注解:原arr[] = {2,7,8};
原*p = 2; *(p+1) = 7; *(p+2) = 8;
*/
for (int i = 0; i < 3; i++)
{
printf("%3d",arr[i]);
}
for (int i = 0; i < 3; i++)
{
printf("%3d",*(p+i));
}
printf("\n");
printf("\n");
/*
注解:1.j = *p = 2;
2.*p++ *p = *(p+1)
3.*p++ 意味着整个p[]向左移动一个单位
*/
j = *p++;// ==*(p++)
//j = *p++;
printf("a[0] = %d , j = %d , *p = %d\n",arr[0],j,*p);
for (int i = 0; i < 3; i++)
{
printf("%3d",arr[i]);
}
for (int i = 0; i < 3; i++)
{
printf("%3d",p[i]);
}
printf("\n");
printf("\n");
j = p[0]++;
printf("a[1] = %d , j = %d , *p = %d\n",arr[1],j,*p);
for (int i = 0; i < 3; i++)
{
printf("%3d",arr[i]);
}
for (int i = 0; i < 3; i++)
{
printf("%3d",p[i]);
}
printf("\n");
}
int main(){
//pointer_self_add();
double num = 9/4;
printf("%f\n",num);
printf("%d",9/4);
}
//总结:*p原本是指向arr[0]的指针,当进行*p++(或者*(p++))的操作时,*p = *(p+1)
//因此*p就开始指向arr[1],*(p+1)就指向arr[2],*p[3]就指向空(0)
//注意:从*p++进行之后*p就不再等于arr
//在进行第二步操作时,p[0]++,这意味着p[0](即*p)指向的arr[1]自增(p[0]++ = arr[1]++)