C++ 指针累加
时间: 2023-07-11 19:04:12 浏览: 74
指针累加是指将指针指向的内存地址按照指针类型所占的字节数进行累加操作。在 C++ 中,可以使用指针运算符 `++` 或者 `+=` 来进行指针累加操作。
例如,如果有一个指针指向一个 `int` 类型的变量,那么每次对该指针进行累加操作时,该指针所指向的内存地址会向后移动 `sizeof(int)` 个字节。
下面是一个简单的例子:
```c++
int arr[] = {1, 2, 3, 4, 5};
int* p = &arr[0];
cout << *p << endl; // 输出 1
p++; // 将指针累加一个 int 类型所占的字节数
cout << *p << endl; // 输出 2
```
在上面的例子中,首先定义了一个数组 `arr`,并将指针 `p` 指向数组的第一个元素。然后输出了 `p` 指向的值,即 `1`。接着将指针 `p` 累加一个 `int` 类型所占的字节数,即向后移动了 `4` 个字节,使得指针 `p` 指向了数组的第二个元素。最后输出 `p` 指向的值,即 `2`。
相关问题
c++求圆周率π的近似值用指针操作变量
好的,这里是一个使用指针操作变量来计算圆周率π的近似值的 C++ 程序:
```c++
#include <iostream>
using namespace std;
void calcPi(double* pi);
int main() {
double pi;
calcPi(&pi);
cout << "圆周率π的近似值为:" << pi << endl;
return 0;
}
void calcPi(double* pi) {
double sum = 0.0;
int sign = 1;
for (int i = 1; i <= 1000000; i += 2) {
sum += sign * 1.0 / i;
sign = -sign;
}
*pi = 4.0 * sum;
}
```
在这个程序中,`calcPi` 函数的作用是计算圆周率π的近似值,它的输入参数是指向 `double` 类型变量的指针,输出结果通过修改这个指针指向的变量的值来实现。在 `main` 函数中,首先定义了一个 `double` 类型变量 `pi`,然后调用 `calcPi` 函数计算圆周率π的近似值,最后输出结果。
在 `calcPi` 函数中,我们使用了一个简单的公式来计算圆周率π的近似值:π = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - ...)。其中,每一项的分子都是1,分母从1开始每次加2,而每一项的符号交替为正负。在循环中,我们累加这些项的和,最终乘以4得到π的近似值,然后通过指针修改 `pi` 的值。
请用C++实现
好的,以下是用C++实现的代码:
```
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
class Land {
protected:
double area;
double price;
public:
Land(double a, double p) {
area = a;
price = p;
}
virtual double getIncome() = 0; // 纯虚函数
};
class Circle : public Land {
private:
double radius;
public:
Circle(double r, double p) : Land(3.1415926535 * r * r, p) {
radius = r;
}
double getIncome() {
return area * price;
}
};
class Square : public Land {
private:
double side;
public:
Square(double s, double p) : Land(s * s, p) {
side = s;
}
double getIncome() {
return area * price;
}
};
class Accountant {
private:
double money;
public:
Accountant() {
money = 0;
}
void DevelopEstate(Land *land) {
money += land->getIncome();
}
double CheckMoney() {
return money;
}
};
int main(int argc, const char *argv[]) {
Accountant py;
Circle *a = new Circle(100, 10000);
Square *b = new Square(100, 50000);
py.DevelopEstate(a);
cout << setprecision(10) << py.CheckMoney() << endl;
py.DevelopEstate(b);
cout << setprecision(10) << py.CheckMoney() << endl;
return 0;
}
```
在这个程序中,Land是一个抽象类,Circle和Square是它的子类,Accountant是一个类用于计算Feng Gor的收入。其中,DevelopEstate函数接收一个Land的指针,计算并累加开发这块房地产带来的收入(这里用到了动态绑定),CheckMoney函数返回当前的收入。