为什么不*(ptr ++)给出数组中的下一个项目?

0 c arrays pointers

int my_array[] = {1,23,17,4,-5,100};
int *ptr;
int i;
ptr = &my_array[0];     /* point our pointer to the first
                         element of the array */
printf("\n\nptr = %d\n\n", *ptr);
for (i = 0; i < 6; i++)
{
    printf("my_array[%d] = %d   ",i,my_array[i]);   /*<-- A */
    printf("my_array[%d] = %d\n",i, *(ptr++));        /*<-- B */
}
Run Code Online (Sandbox Code Playgroud)

为什么这对a和b线都显示相同的东西?它只是按顺序显示my_array中的所有值(1,23,17,4,-5,100).为什么B行中的'++'在取消引用之前没有将ptr指向数组的下一个元素?即使您将该行更改为

printf("ptr + %d = %d\n",i, *ptr++);        /*<-- B */
Run Code Online (Sandbox Code Playgroud)

输出是一样的.为什么是这样?

Mar*_*ett 13

ptr ++递增ptr但返回原始值
++ ptr递增并返回新值

因此关于c ++的笑话 - 它比c更多,但你使用原始值= c

  • 哈哈,我从未意识到语言名称:) (2认同)