已知某虚拟机的代码片段如下:
//累加器和栈指针
int ax;
int *sp;
//栈
int *stack;
//初始化
const int poolsz = 256*1024;
stack = (int *)malloc(poolsz);
memset(stack, 0, poolsz);
sp = (int *)(stack + poolsz);
...
//问题所在
ax = *(char *)*sp++ = ax;
能告诉最后一个指针怎么理解吗?
已知某虚拟机的代码片段如下:
//累加器和栈指针
int ax;
int *sp;
//栈
int *stack;
//初始化
const int poolsz = 256*1024;
stack = (int *)malloc(poolsz);
memset(stack, 0, poolsz);
sp = (int *)(stack + poolsz);
...
//问题所在
ax = *(char *)*sp++ = ax;
能告诉最后一个指针怎么理解吗?
关于c语言的结合性
根据操作符优先级 和 结合方向

你的例子中包含三个操作符 ,他们的结合性是从右到左
(1)++ 自增运算符
(2)(char *)强制类型转换
(3)*取值运算符