C/C++ 递增/递减运算符和指针

发布时间:2023年12月26日

????????可以将递增运算符用于指针和基本变量。本书前面介绍过。将递增运算符用于指针时。将把指针的值增加其指向的数据类型占用的字节数,这种规则适用于对指针递增和递减。

double arr[5] = {1.1, 2.1, 3.1, 4.1, 5.1};
double *ptr = arr;
++ptr;

????????也可以结合使用这些运算符和*运算符来修改指针指向的值。将*和++同时用于指针时提出了这样的问题:将什么接触引用,将什么递增。这取决于运算符的位置和优先级。前缀递增,前缀帝建和解除引用运算符的优先级相同。以从右到左的方式进行结合。后缀递增和后缀递减的优先级相同。但比前缀运算符的优先级高,这两个运算符以从左到右的方式进行结合。

?? ?前缀运算符的从右到左的结合规则意味着:

????????double arr[5] = {1.1, 2.1, 3.1, 4.1, 5.1};
????????double *ptr = arr;? // ptr当前指向arr[0]
?? ??? ?*++ptr的含义如下:先将++应用与ptr,然后将*应用与被递增后的ptr.
?? ??? ?++*ptr的含义如下,先取得ptr指向的值,然后将这个值加1.
?? ??? ?(*ptr)++ 圆括号指出,首先对指针解除引用。然后运算符++将这个值递增1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ??? ?*ptr++ 后缀运算符++的优先级更高,这意味着将运算符用于ptr,而不是*pt,因此对指针递增。

示例源码:

// Len_ptr.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;

int main()
{
	double arr[5] = { 1.1, 2.1, 3.1, 4.1, 5.1 };
	double *ptr = arr;
	cout << "ptr=" << ptr << ", *ptr=" << *ptr <<"		value:";
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << ", ";
	}
	cout << endl << endl;

	double data1 = *++ptr;
	cout << "*++ptr =" << data1 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << ", ";
	}
	cout << endl << endl;

	double data2 = ++*ptr;
	cout << "++*ptr = " << data2 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << ", ";
	}
	cout << endl << endl;
	
	double data3 = (*ptr)++;
	cout << "(*ptr)++ =" << data3 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << ", ";
	}
	cout << endl << endl;
	
	double data4 = *ptr++;
	cout << "*ptr++=" << data4 << ", ptr=" << ptr << ", *ptr=" << *ptr << "		value:";
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << ", ";
	}
	cout << endl << endl;

}

执行结果:

文章来源:https://blog.csdn.net/wendyWJGU/article/details/135174606
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。