下面是我创建的一个示例程序,用于指针的使用。解引用双指针,三指针等
#include <iostream>
using namespace std;
void addOne(int** ptr);
void addTwo(int*** ptr);
void addThree(int**** ptr);
void addFour(int***** ptr);
int main()
{
int* ptr = nullptr;
int x = 1;
ptr = &x;
cout << "Original value of x: " << *ptr << endl;
addOne(&ptr);
cin.get();
return 0;
}
void addOne(int** ptr)
{
**ptr += 1;
cout << "After adding 1: " << **ptr << endl;
addTwo(&ptr);
}
void addTwo(int*** ptr)
{
***ptr += 2;
cout << "After adding 2: " << ***ptr << endl;
addThree(&ptr);
}
void addThree(int**** ptr)
{
****ptr += 3;
cout << "After adding 3: " << ****ptr << endl;
addFour(&ptr);
}
void addFour(int***** ptr)
{
*****ptr += 4;
cout << "After adding 4: " << *****ptr << endl;
}
上面的程序给我下面的输出:
Original value of x: 1
After adding 1: 2
After adding 2: 4
After adding 3: 7
After adding 4: 11
现在专注于addFour功能:
void addFour(int***** ptr)
{
*****ptr += 4;
cout << "After adding 4: " << *****ptr << endl;
}
现在我所做的就是我减少* S的数量在addFour函数中这样做:
void addFour(int***** ptr)
{
****ptr += 4;
cout << "After adding 4: " << ****ptr << endl;
}
当我做了上面的代码,它给了我下面的输出:
Original value of x: 1
After adding 1: 2
After adding 2: 4
After adding 3: 7
After adding 4: 010EFDE0
我的问题则是,什么是下面的语句做,因为我减少* S的数量:
****ptr += 4;
cout << "After adding 4: " << ****ptr << endl;
有人可以为我解释这个吗?
你到底想干什么? –
我试图观察指针的行为。这是在课堂上讨论的。我只是想了解发生了什么。 – Omicron
@Omicron如果你真的想写C++代码,最好忘记指针。对于99%的真实世界用例,根本不需要它们(不管星号有多少)。 –