*p++
#include<stdio.h>
#include<stddef.h>
#include<string.h>
void main()
{
int str[]={1,2,3,4,5};
int *p=str;
//*p++;
printf("%x\n",p);
printf("%d\n",*p++);
printf("%x\n",p);
printf("%x\n",*p);
}
*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;
运行结果:
(*p)++
#include<stdio.h>
#include<stddef.h>
#include<string.h>
void main()
{
int str[]={1,2,3,4,5};
int *p=str;
//*p++;
printf("%x\n",p);
printf("%d\n",(*p)++); //先取出*p的值,在让*p的值++
printf("%x\n",p);
printf("%x\n",*p);
}
(*p)++ 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2,但是p指针指向的地址并没有发生变化。
运行结果:
*++p
#include<stdio.h>
#include<stddef.h>
#include<string.h>
void main()
{
int str[]={1,2,3,4,5};
int *p=str;
printf("%d\n",*++p);
}
先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值
运行结果:
++*p
先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2),但是p指向的地址不发生变化。
#include<stdio.h>
#include<stddef.h>
#include<string.h>
void main()
{
int str[]={1,2,3,4,5};
int *p=str;
printf("%x\n",p);
printf("%d\n",++*p);
printf("%x\n",p);
}
运行结果: