为了账号安全,请及时绑定邮箱和手机立即绑定

求助大神,是不是数组赋值的问题

#include<iostream>

#include<stdlib.h>

#include "demo.h"

using namespace std;



int main()

{

 Coordinate Coor[3];//从栈中实例化对象数组

 Coor[0].m_iX=10;

 Coor[0].m_iY=20;


 Coor[1].m_iX=11;

 Coor[1].m_iY=21;


 Coor[2].m_iX=12;

 Coor[2].m_iY=22;


 Coordinate *p=new Coordinate[3];

 p->m_iX=30;//若没有写Coordinate,则默认的是访问对象数组的第一个对象

 p->m_iY=40;//另一种访问对象数组成员的方式

 

 p++;//指针指向数组中的第二个对象 

 p[0].m_iX=31;//此时的p[0]指的是第二个对象

 p[0].m_iY=41;


 p[1].m_iX=32;//指向数组中的第三个对象

 p++;

 p[0].m_iY=42;


 /*遍历数组中的对象(打印出数组中的每一个成员)*/

 for(int i=0;i<3;i++)

 {

cout<<"Coor_x: "<<Coor[i].m_iX<<endl;

cout<<"Coor_y: "<<Coor[i].m_iY<<endl;

 }

 

 for(int j=0;j<3;j++)

 {

     cout<<"p_x: "<<p[j].m_iX<<endl;

     cout<<"p_y: "<<p[j].m_iY<<endl;

     p--;//此时p已经指向了第三个数据成员,要实现遍历需依次向前指

 }

 

 p++;//p在执行完循环之后指向了一个非法的地址,故需要让p指向首元素。

 delete []p;

 p=NULL;

 system("pause");

 return 0;

}

第二个数组的运行结果如下:

p_x: 32

p_y: 42

p_x: 32

p_y: 42

p_x: 32

p_y: 42

求大神帮忙看一下是不是第二个数组赋值不正确?

正在回答

1 回答

你的打印出的全是第三个对象的数据,赋值并没有出错

你的打印方式应该用p去调用成员

 for(int j=0;j<3;j++)

 {

     cout<<"p_x: "<<p.m_iX<<endl;//改动这里的调用方式

     cout<<"p_y: "<<p.m_iY<<endl;

     p--;//这里已经实现了指针回指,上面就无需使用下标调用

 }

改成这样试试

1 回复 有任何疑惑可以回复我~
#1

高挑挑的木头人 提问者

非常感谢你的指点哟,我明白了我的错误在哪儿了,不过最后输出采用指针调用的时候得是p->m_iX和p->m_iY,这样就可以了~~棒棒的!
2017-07-16 回复 有任何疑惑可以回复我~
#2

宝慕林2364461

手误了,把点改成指针调用符号->
2017-07-16 回复 有任何疑惑可以回复我~
#3

高挑挑的木头人 提问者 回复 宝慕林2364461

嗯哪,我猜也是打错了~
2017-07-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

求助大神,是不是数组赋值的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信