指针啊!!!
如果有代码理解不了,那就亲自敲出来慢慢的测试。
------我说的
算是留下个记录,将来不用每次都敲出来
上次写的二级指针: https://blog.csdn.net/Pwnpanda/article/details/86775911
#include<iostream>
using namespace std;
void TestA(int **A)
{
//这里传入的A是main函数中指针a的地址
//*A是访问a中存储的信息,即data的地址
//**A相当于*a,即访问data的数据
cout<<"A: "<<A<<endl;
cout<<"*A: "<<*A<<endl;
cout<<"**A: "<<**A<<endl;
// **A = 65;
}
void TestB(int *B)
{
//B是a中存储的数据,即data的地址,相当于&data
//*B相当于*a,访问data内存储的数据
cout<<"B: "<<B<<endl;
cout<<"*B: "<<*B<<endl;
// *B = 66;
}
//testC和testD传入的参数不能是指针
void TestC(int C)
{
cout<<"C: "<<C<<endl;
//这里输出的&C是C的地址
cout<<"&C: "<<&C<<endl;
// C = 67;
}
//注意函数TestC和TestD的区别
void TestD(int &D)
{
cout<<"D: "<<D<<endl;
//这里输出的&D是data的地址
//也就是说在这个函数里对D进行修改,那么data也会改变
cout<<"&D: "<<&D<<endl;
// D = 68;
}
int main()
{
// cout<<"123"<<endl;
int data = 1234;
cout<<"data: "<<data<<endl;
cout<<"&data: "<<&data<<endl;
cout<<"-----"<<endl;
int *a = &data;
//输出指针a的地址
cout<<"&a: "<<&a<<endl;
//输出指针a的内容
cout<<"a: "<<a<<endl;
//a的内容是一个地址,现在访问这个地址内的数据
cout<<"*a: "<<*a<<endl;
cout<<"-----"<<endl;
//测试用的四个函数,只有TestC无法修改data的值
TestA(&a);
cout<<data<<endl;
cout<<"-----"<<endl;
TestB(a);
cout<<data<<endl;
cout<<"-----"<<endl;
TestC(data);
cout<<data<<endl;
cout<<"-----"<<endl;
TestD(data);
cout<<data<<endl;
return 0;
}