指针这个名字确实折磨过很多人,这个名字是个好名字,同时也是一个非常不好的名字. 说它好,是因为指针这个东西很形象的体现了它的功能:指针指针,指到某个地方某个位置.非常形象. 它不是个好名字是因为她的名字有时候掩盖了它的真实含义.一般来说,指针是一个其值为地址的变量。(就是一个存储地址的变量)
所以,要养成一种条件反射,看到指针首先不是想到他能够指向哪里,而是想到这个变量存放的是一个地址,是这个地址指向哪里哪里。&是取地址运算符,*是间接运算符
声明指针的模板:
指向地址的数据类型 * 指针变量名;
#include <iostream>
int main()
{
int a=10;
int *p_a=&a;
int **pp_a=&p_a;
std::cout<<"p_a:"<<p_a<<std::endl<<"*p_a:"<<*p_a<<std::endl;
std::cout<<std::endl;
std::cout<<"PP_a:"<<pp_a<<std::endl<<"*pp_a:"<<*pp_a<<std::endl<<"**pp_a"<<**pp_a<<std::endl;
}
//我的理解是
int a=10;
int *p_a=&a;
int *a地址 = a地址; //&a就是取a的地址,这里的等号是把地址赋值到指针变量名上,即p_a
int 10 = 0x69fee8 //这是等号左右的实际意义
//指向指针的指针表现为:
int **pp_a=&p_a;
int *(p_a地址)=p_a地址;
int 10 = 0x69fee8;