在学习C/C++的时候,学到指针这一章节,难免会有点畏难的心理,其实这在很大程度上是对指针的定义、作用原理不甚了解导致的,当你在这些东西有一个比较细致的
了解时,会发现指针也不是那么的难,当然这里针对的是小型程序。下面通过一级指针和二级指针在作用上的对比,加深对指针作用原理的理解。
一、通过调用二级指针修改一级指针的值
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int i = 30;
cout << "&i = " << &i << endl;
cout << "i = " << i << endl << endl;
int* pi = &i;
cout << "*pi = " << *pi << endl;
cout << "pi = " << pi << endl << endl; // 执行int *pi = &i之后,pi里面放的是i的地址
int** ppi = π
cout << "pi = " << pi << endl;
cout << "&pi = " << &pi << endl;
cout << "ppi = " << ppi << endl; // 执行完int ** ppi = &pi之后,ppi里面放的是pi的地址
cout << "*ppi = " << *ppi << endl; // *ppi里面放的是pi的内容,也就是pi取得的i的地址
cout << "**ppi = " << **ppi << endl; // pi指向的地址中的值
return 0;
}
输出
二、通过二级指针修改一级指针的指向
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int i = 30;
int* pi = &i;
cout << "一级指针*pi = " << *pi << endl << endl; //一级指针
cout << "&i = " << &i << endl;
cout << "指针改变前pi = " << pi << endl << endl;
int** ppi = π
cout << "二级指针**ppi = " << **ppi << endl; //二级指针
*pi = 20;
cout << "改变一级指针内容: *pi = " << *pi << endl; //改变一级指针值
cout << "一级指针*pi = " << *pi << endl; //二级指针
int b = 10;
*ppi = &b; // 这里需要好好理解,这句话就已经改变了指针的指向,*ppi原来是pi的内容,也就是i的地址,现在改为了b的地址,自然指针的指向也发生了改变
cout << "&i = " << &i << endl << endl;;
cout << "&b = " << &b << endl;
cout << "指针改变后pi = " << pi << endl << endl;
cout << "改变一级指针指向*pi = " << *pi << endl; //改变一级指针的指向
cout << "二级指针**ppi = " << **ppi << endl;
return 0;
}
输出