📅  最后修改于: 2023-12-03 14:59:00.512000             🧑  作者: Mango
++ * p
、 * p ++
和 * ++ p
的区别在 C/C++ 中,指针是一种非常重要的数据类型,其主要作用是用于地址运算。而 ++ * p
、* p ++
和 * ++ p
这三种操作都涉及到指针的运算,它们的区别如下:
++ * p
:先对指针 p
所指向的内容进行自增操作,然后返回自增后的值。举个例子:int a[] = {1, 2, 3};
int *p = a;
cout << ++ *p << endl; // 输出 2
cout << *p << endl; // 输出 2
* p ++
:先将指针 p
指向的内容取出,然后将指针 p
自增一位(移动一位),最后返回取出的内容。举个例子:int a[] = {1, 2, 3};
int *p = a;
cout << *p ++ << endl; // 输出 1
cout << *p << endl; // 输出 2
* ++ p
:先将指针 p
自增一位(移动一位),然后再对指针 p
所指向的内容进行取值操作,最后返回取出的内容。举个例子:int a[] = {1, 2, 3};
int *p = a;
cout << * ++ p << endl; // 输出 2
cout << *p << endl; // 输出 2
我们可以看到,++ * p
和 * ++ p
都是先自增指针,再取出其所指向的值;而 * p ++
则是先取出指针所指向的值,再自增指针。
需要注意的是,这三种操作都是对指针所指向的内容进行操作,而指针本身的值(即内存地址)其实都是不变的。因此,在平常的编码过程中,我们要针对具体情况选取适合的操作,以充分利用指针的功能。