她的睫毛 发表于 2021-3-12 20:31:25

请问代码中的*(ptr++)+=123;这个指令执行后,为什么指针ptr只移动了一次,而不是li...

#include <stdio.h>

int main()
{
    int arr[] = {6,7,8,9,10};
    int *ptr = arr;
    printf("%#X\n", ptr);
    *(ptr++)+=123;
    printf("%#X\n", ptr);
    printf(" %d %d ", *ptr, *(++ptr));
    return 0;
}

运行结果:
0XBFA23988
0XBFA2398C
*ptr = 8, *(++ptr) = 8

liuzhengyuan 发表于 2021-3-12 20:37:33

你的问题没有打全

她的睫毛 发表于 2021-3-12 20:40:49

请问代码中的*(ptr++)+=123;这个指令执行后,为什么指针ptr只移动了一次,而不是两次;

pythonnulixuexi 发表于 2021-3-15 21:23:14

#include<stdio.h>
2
3 int main(void){
4   int arr[]={6,7,8,9,10};
5   int *ptr=arr;
6   printf("%p\n",ptr);
7   *(ptr++)+=123;
8   printf("%p\n",ptr);
9   printf("%d\n",*ptr);
10   printf("%d %d \n",*ptr,*(++ptr));
11
12   return 0;
13 }

我加了一句,运行结果是
0x7ffe52e88790
0x7ffe52e88794
7
8 8
*(ptr++)+=123;括号里的就是地址的移动,括号歪就不是了
页: [1]
查看完整版本: 请问代码中的*(ptr++)+=123;这个指令执行后,为什么指针ptr只移动了一次,而不是li...