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

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

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 
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;

}

执行结果:

C/C++ 递增/递减运算符和指针_第1张图片

你可能感兴趣的:(C/C++学习,c++,开发语言,c语言)