下面是我創建的一個示例程序,用於指針的使用。解引用雙指針,三指針等
#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%的真實世界用例,根本不需要它們(不管星號有多少)。 –