这里的代码给出了怎么去理解指针,指针指向的是数据的地址,二级指针指向的是指针的地更改指针的值不改变原数据,代码注释非常详细,能够比较容易理解指针的简单应用。
#include<iostream>
using namespace std;
int main()
{
int a=10;
int b=100;
int *p1=&a; //指针p1指向对象a
int *p2=&b;
// int *p3=&p1; 这种不对
int **p3=&p1; //二级指针,**p表示p所指向的地址里面存放的是一个指向int类型的指针,这里指针p3指向p1指针
int *p4=p1; //指针p4=p1
cout<<"p1: "<<p1<<endl; //p1所指对象a的地址
cout<<"*p1: "<<*p1<<endl; //p1所指对象a的值
cout<<"&p1: "<<&p1<<endl; //p1自己的地址
cout<<"p2: "<<p2<<endl;
cout<<"*p2: "<<*p2<<endl;
cout<<"&p2: "<<&p2<<endl;
cout<<"p4: "<<p4<<'\n'<<"*p4: "<<*p4<<'\n'<<"&p4: "<<&p4<<std::endl;
cout<<a<<"&"<<*p1<<"&"<<**p3<<std::endl;//三种方式输出a的值
p2=p1; //更改p2指针的值
*p1=9; //更改p1所指对象的值
cout<<"p2 "<<p2<<endl; //p2所指对象a的地址
cout<<"*p1 "<<*p1<<endl; //p1所指对象a的值
cout<<"a="<<a<<" b="<<b<<endl; //a和b的值一直没有变
system("pause");
return 0;
}