指针表达式:*PTR++、*++PTR和++*PTR?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (78)

这三种表达方式是什么?

*ptr++
*++ptr
++*ptr

例如:

int main()
{
    const char *p = "Hello";
    while(*p++)
         printf("%c",*p);
    return 0;
}

输出:

ello

提问于
用户回答回答于

或者尝试下:

int main()
{
    const char *p = "Hello";
    while(*p++)
        printf("%c",*p);
    return 0;
}

声明:

const char* p = "Hello";

然后设置一个循环:

while (*p++)

如果有:

int i = 7;
printf ("%d\n", i++);
printf ("%d\n", i);

输出:

7
8

int代码:

int i = 7;
printf ("%d\n", i++);
printf ("%d\n", i);

用户回答回答于

假设ptr指向数组的第一个元素。

  1. *ptr++评估为arr[i]和集ptr指向arr...。它相当于*(ptr++)
  2. *++ptrptr指向arr并评估为arr[i+1]...。它相当于*(++ptr)
  3. ++*ptr increases arr[i]由1计算为其增加的值;指针ptr都没被碰过。它相当于++(*ptr)

还有一个,但是您需要括号来编写它:

  1. (*ptr)++ increases arr[i]在增加之前计算为它的值;指针ptr又一次没有被碰过。

扫码关注云+社区