int x =10;int* p =&x;// p 是一个指向 x 的指针int y =*p;// y 被赋值为 x 的值,*p 为解引用 p ,解引用p得到x的值//变量 y 将被赋值为 5,因为 *p 返回了 p 所指向的值。
改变指针指向的值
通过解引用来修改指针指向的内存中的值
*p =20;// 现在 x 的值为 20//解引用 p 并给它赋一个新值,将会改变原本 p 所指向的内存位置的内容,因此 x 的值将变为 20。
解引用数组的指针
int arr[5]={1,2,3,4,5};int* ptr = arr;// ptr 指向数组 arr 的第一个元素int first =*ptr;// first 为 1,即 arr[0] 的值int second =*(ptr+1);// second 为 2,即 arr[1] 的值//ptr+1 移动到数组的第二个元素,然后被解引用
constint constantValue =100;constint* ptrToConst =&constantValue;int value =*ptrToConst;// 合法的读操作*ptrToConst =200;// 非法的写操作,编译时会出错
解引用多级指针
int x =10;int* p =&x;// p 是一个指向 x 的指针int** pp =&p;// pp 是指向指针 p 的指针int zz =*p;// 解引用一次得到 pint z =**pp;//解引用两次得到 x; z 被赋值为 p 指向的值,即 x 的值//pp 是一个多级指针,即指针的指针。解引用两次 **pp 可以获取 pp 指向的指针所指向的值,即 x 的值