相关疑难解决方法(0)

C - 指针和不同的结果?

我无法弄清楚这一点.也许是因为凌晨2点.无论如何,我在这里不知所措.

#include <stdio.h>

int main()
{
    char array[] = "123456789";
    char* ptr = array;

    printf("%c\n", *(ptr++));
    printf("%c\n", *ptr);

    *ptr = array[3];
    printf("%c\n", *(ptr++));
    printf("%c\n\n", *ptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

1
2
4
3
Run Code Online (Sandbox Code Playgroud)
  1. 我有一个指针,我指定array.

  2. 然后我打印,我认为将是第一个索引('2'),而是得到1.- 所以,我假设它*(ptr++)实际上是取消引用,然后才增加指针.

  3. 然后我重新分配ptr第四个索引('4')并重复步骤2.这样就可以正常工作,因为我看到C在解除引用之前不会先计算括号.

  4. 然后我打印新增加ptr的显示('5')...我得到了3

那是怎么回事,第1步和第2步以及第3步和第4步是相同的,但是我得到了不同的结果?

c pointers

14
推荐指数
2
解决办法
648
查看次数

标签 统计

c ×1

pointers ×1