一.指针
int *Ptr; //声明一个整型指针变量
int y=7 ; //声明一个整型变量并赋值为7
Ptr = &y ; //&是取地址符号,&y就是得到y的地址,然后将y的地址存储到Ptr的内存空间(将y的地址赋值给Ptr)
&取地址符号, *引用指针指向的值
示例
地址 35 36
变量 Ptr y
值 36 7
这里采用简化的说法(计算机中内存地址一般是以16位16进制数表示,例如0x7ffc111e6da0)。
此时,运行在内存中的变量由三部分组成,一是地址,二是变量名,三是变量值(可能为空)。
(1) int *Ptr; 语句声明了一个指针,假设系统将这个变量名Ptr存储在35号地址单元,这时候它还没有值,我们表示成这样。
变量 Ptr
地址 35
值
(2)int y = 7; 这里定义一个值为7的整型变量y,假设系统将这个变量名y和变量值存储在35号地址单元旁边的36号地址单元,示例如下
地址 35 36
变量 Ptr y
值 7
(3)Ptr = &y; 这个语句用&y得到y的存储地址也就是36,然后将36赋值给Ptr,也就是存储到35号地址存放变量值的空间
地址 35 36
变量 Ptr y
值 36 7
(4)*Ptr为获得Ptr中存储的地址所指向的值,也就是36号地址存放的值
*Ptr --> 36 --> 7 即 *Ptr = 7; //Ptr存放的是地址36,地址36存放的值是7, *符号在这里获得36存储的值
cout << *Ptr ; 输出为7
cout << Ptr ; 输出为36 //实际上的地址是类似与这样的 0x7ffeb92a2be4
cout << &Ptr ; 输出为它的地址35 //同上,它也是16位16进制
cout << &y ; 输出y的地址36 //同上
二.结构与链表实现
网友评论