#include <stdio.h>
int main(void)
{
int i;
int *ptr = (int *) malloc(5 * sizeof(int));
for (i=0; i<5; i++)
*(ptr + i) = i;
printf("%d ", *ptr++);//prin1
printf("%d ", (*ptr)++);//print2
printf("%d ", *ptr);//print3
printf("%d ", *++ptr);//print4
printf("%d ", ++*ptr);//print5
}
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
0 1 2 2 3
Run Code Online (Sandbox Code Playgroud)
作为输出.
我无法理解为什么"print4"正在打印2它应该打印3作为指针*++ ptr将被视为*(++ ptr),即指针将首先递增
*ptr++ - >打印0,递增ptr的1.
(*ptr)++ - >打印1,增量1到2.
*ptr - >打印存储的增量值,即2.
*++ptr - >增加ptrby 1然后打印指向的值ptr,即2.
++*ptr - >增加值,即2指向ptr,然后打印,即3.