C++ 中 ++*p、*p++ 和 *++p 的区别


在本节中,我们将了解 C++ 中 *ptr++、++*ptr 和 *++ptr 之间的区别。

在这里,我们将看到 C 或 C++ 中后缀 ++ 和前缀 ++ 的优先级。前缀 ++ 或 -- 的优先级高于解引用运算符 ‘*’,后缀 ++ 或 -- 的优先级高于前缀 ++ 和解引用运算符 ‘*’。

当 ptr 是一个指针时,*ptr++ 表示 *(ptr++),++*ptr 表示 ++(*ptr)。

示例代码

 在线演示

#include<iostream>
using namespace std;
int main() {
   char arr[] = "Hello World";
   char *ptr = arr;
   ++*ptr;
   cout << *ptr;
   return 0;
}

输出

I

因此,首先 ptr 指向 ‘H’。使用 ++*ptr 后,它将 H 增加 1,现在的值为 ‘I’。

示例代码 (C++)

#include<iostream>
using namespace std;
int main() {
   char arr[] = "Hello World";
   char *ptr = arr;
   *ptr++;
   cout << *ptr;
   return 0;
}

输出

e

因此,首先 ptr 指向 ‘H’。使用 *ptr++ 后,它会使指针增加,所以 ptr 将指向下一个元素。因此结果是 ‘e’。

示例代码 (C++)

 在线演示

#include<iostream>
using namespace std;
int main() {
   char arr[] = "Hello World";
   char *ptr = arr;
   *++ptr;
   cout << *ptr;
   return 0;
}

输出

e

在这个例子中,我们也使用 ++ 来增加 ptr,其中前增量 ++ 的优先级更高,所以它首先增加指针,然后使用 * 获取值。所以它打印的是 ‘e’。

更新于:2019年7月30日

1K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告