我是Lee,软件工程专业在读学生,欢迎来到我网站。
幡然醒悟 、醍醐灌顶。
123456789101112131415161718192021222324
//首先定义一个普通的int 型变量 pint p = 3;//此时编译器在内存中开辟了一个内存空间p 假设其地址为(OxA1)地址对应的内存空间就存储了p的值3//此时我们要取得p的地址则只需使用 & &p == OxA1//现在我们定义一个指针 int *q;//因为指针也是存储在内存当中的,假设指针q在内存中的地址为(OxB1)所以我们可以通过&获得指针q在内存中的地址&q == OxB1 //指针的赋值操作 把p的地址赋给指针qq = &a; //此时在指针q的内存空间(OxB1)中存储的是 a的地址(OxA1) //那我们如何取得指针q中存储的a的地址的值3呢? //我们可以通过 *q这个操作来实现 *q的含义是取指针q存储的地址所对应的值*q = 3; //普通变量p和指针q的区别 p == 3; &p == OxA1 q == OxA1 &q == OxB1 *q == 3
123456789101112
//定义一个二级指针和一个一级指针int **d;int *q;//跟一级指针类似,二级指针在创建的时候编译器也会在内存中创建一个空间,假设地址为(OxC1)所以我们可以通过&获得指针d在内存中的地址,假设指针q在内存中的地址为(OxB1)&d == OxC1//二级指针的内存空间存放的是一级指针的地址d = &q //把一级指针的地址赋给二级指针d == OxB1 //一级指针的地址&d == OxC1 //二级指针自身存储地址*d == OxA1 //根据一级指针中存放的 int型变量 p的地址**d == 3 //根据一级指针中 p的地址 得到的p的值
Seraching...