//第一种 C++开辟,省事,但是效率低。
Person p; //系统开辟空间
//第二种 程序员开辟,效率高,灵活,但是不安全。
Person *p = new Person
int *m = new int;
//第三种:用一个个体保存另外一个个体的地址。
Person *p1 = new Person; //这个个体在内存中的地址是p1;
Person *p2 = p1; //p2保存了p1的地址。
Person p3; //p3在内存中的地址是&p3;//系统开辟的加&符号
Person *p4 = &p3; //p4保存了p3的地址。
用int举例:
int a = 1;
int *p1 = &a; //p1保存了a在内存中的地址。
int *p2 = new int; //p2在内存地址是p2;
int *p3 = p2; //p3保存了p2的地址。
对于个体(变量),我们只关注两个方面:A、 一个是它的地址(内存编号),B、一个是地址中的值。
自己开辟的,
int *p = new int;
*p=123;
设计C++的人说:
A、把p当做它的地址(内存编号)
B、把*p,当做该内存编号中存放的值。
这样两个都有了。再出现&p就没有意义了,关键是两个都有了,所有才没有意义。
如果设计C++的人,最初规定:
int *p = new int;
设计的人,如果是这样定义地址的:
&p是该个体在内存中的地址的话。
那么我们今天就认为&p是地址了,
关键是设计C++的人没有最开始这样设计。人家对于自己开辟的,就是用p来表示在内存中的编号的