C/C++之指针加减法

C和C++中可对指针进行加减,但对其进行乘除则基本无实际意义。
一般来说,对指针进行减法的前提是减数和被减数均指向同一数组。加法同理。
需要注意的是,两个指针的减法,结果是两个地址之间索引变量的数目,而不是占用内存的字节数。
例如下面例子:

1 #include<iostream>
2 using namespace std;
3 int main(void)
4 {
5  int Array[10] = {0};
6  cout << (Array+3) - Array << endl;
7   return 0;
8 }

运行结果为:3
将Array从int类型转到double类型,结果还是3.这正说明:两个地址减法结果是其二者间索引变量的数目。
如果想要输出占用内存的字节数。可进行强制类型转换,如下:

1 #include<iostream>
2 using namespace std;
3 int main(void)
4 {
5  int Array[10] = {0};
6  cout << (int)(Array+3) - (int)Array << endl;
7   return 0;
8 }

运行结果为:12
将Array从int类型转到double类型,结果为:24.

原文地址:https://www.cnblogs.com/goodhx/p/5154820.html