假设我定义了这个结构:
struct Point { double x,y; };
现在,假设我创建了一个这种类型的动态数组:
Point *P = new Point[10];
为什么我使用P [k] .x和P [k] .y代替P [k] – > x和P [k] – > y来访问第k个点的元素?
我以为你必须使用后者作为指针.
解决方法
实际上,您使用p [index] .x和p [index] .y来访问数组内部结构的元素,因为在这种情况下,您使用指针来引用动态分配的数组.
ptr->成员运算符只是(* ptr).member的简写.为了使用它,你需要在左侧有一个指针:
Point *p = new Point; p->x = 12.34; p->y = 56.78;
请注意,即使对于动态分配的数组,– >操作符会工作:
Point *p = new Point[10]; p->x = 12.34; p->y = 56.78;
这相当于
p[0].x = 12.34; p[0].y = 56.78;
因为指向数组的指针等于指向其第一个元素的指针.