指针的运算规则

#include <stdio.h>
void main()
{
int a=2,*p=&a,*q=&a;
printf("%d %d\n",*p++,*(q++));
p=&a;q=&a;
printf("%d %d\n",*p,(*q)++);
}

*,&与++,--,!等单目运算符的优先级相同,且遵循右结合

printf函数是从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的

*(q++)

1.使用过p后值加一

2.*q取数据2

3.*(q++)值为2且 q指向下一个内存单元

 

*p++:

1.使用p过后值加一

2.*p取数据2

3.*p++值为2且 p指向下一个内存单元

 

(*q)++

1.*q取数据2

2.取值后++得3即a=3

 

*p等于a=3

 

posted @ 2022-02-12 22:40  冬123  阅读(116)  评论(0)    收藏  举报