指针的运算规则
#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

浙公网安备 33010602011771号