回复 8楼 佳嘉
不好意思,我弄错了,在这儿TEMP类是一个指向temp类型的指针类型。
1.这儿TEMP类是一个指向temp类型的指针类,因此用TEMP申明的变量m本身就是一指针,即变量m存储的是一个temp类型的数据的地址,所以才会有
(*x)->e=5
(x)->e=5
(m)->e=7
的结果。
2.当使用temp来申明m时,即使用
temp m;
时,就是我上面所说的那种情况,此时m不再是一个指针类型的变量。
3.源程序要将m申明为TEMP类,或者说是temp*类,其作用就是可以动态申请内存,即是可以使用malloc或者new在程序运行过程中分配内存。a.一方面,在使用malloc或者new关键字得到的内存地址是事先不确定的,是操作系统根据实际情况分配的,我们在不同的时刻使用了malloc或者new过后,m指针的值是不同的,也就是说m的值是不确定的;b.另一方面,m本身是一个变量,在程序运行过程中都是在固定的内存地址上的,即对m的引用&m在整个程序的运行过程中是不变的。因而在使用过程中&m比m要安全些。