cin.get(ps[i].name,20);//问题在这里
//动态结构应用->来访问,因为结构没有名称,此处用.访问,难道结构有名称?
//难道名称是数组?即ps[i]?
首先,这个问题和new动态结构没有任何关系。c/c++里,通过对象访问成员用点“.",通过指针访问成员用"->",成员包括成员变量和成员函数,就是这么规定的。如果不明白对象和指针,往下看。
指针很好理解,就是内存地址,对象指针就是对象在内存中的起始地址,而对象就是内存中实际存在的那个实体,对象好比你家,指针好比你家的门牌地址。在这个问题中,ps[i]的意思就是取ps+i地址处的内容,也就是对象,如果换成ps+i,则要用(ps+i)->name,因为ps+1是指针
new 创建的对象返回的是数组的首地址 所以ps是地址也即是&ps[0]
再者数组名本身就表示数组的首地址如 int jk[10]; jk就表示该数组的首地址;
所以用ps-> 和用ps[]。不正是一个道理吗
怎么解释呢。。。
ps使用了[]运算符访问到的就是实际的对象啊。。。所以不需要->
如果类似这样
car* p[10];
for (int i = 0; i < 10; ++i)p[i] = new car;
p[i]访问到的是指针,所以要用->
解释的有点乱。。
获取数组元素就应该用“.”啊 获取方法才应该用“->”吧