求助大神,是不是數(shù)組賦值的問題
#include<iostream>
#include<stdlib.h>
#include "demo.h"
using namespace std;
int main()
{
?Coordinate Coor[3];//從棧中實例化對象數(shù)組
?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,則默認的是訪問對象數(shù)組的第一個對象
?p->m_iY=40;//另一種訪問對象數(shù)組成員的方式
?
?p++;//指針指向數(shù)組中的第二個對象?
?p[0].m_iX=31;//此時的p[0]指的是第二個對象
?p[0].m_iY=41;
?p[1].m_iX=32;//指向數(shù)組中的第三個對象
?p++;
?p[0].m_iY=42;
?/*遍歷數(shù)組中的對象(打印出數(shù)組中的每一個成員)*/
?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已經(jīng)指向了第三個數(shù)據(jù)成員,要實現(xiàn)遍歷需依次向前指
?}
?
?p++;//p在執(zhí)行完循環(huán)之后指向了一個非法的地址,故需要讓p指向首元素。
?delete []p;
?p=NULL;
?system("pause");
?return 0;
}
第二個數(shù)組的運行結果如下:
p_x: 32
p_y: 42
p_x: 32
p_y: 42
p_x: 32
p_y: 42
求大神幫忙看一下是不是第二個數(shù)組賦值不正確?
2017-07-16
你的打印出的全是第三個對象的數(shù)據(jù),賦值并沒有出錯
你的打印方式應該用p去調(diào)用成員
?for(int j=0;j<3;j++)
?{
? ? ?cout<<"p_x: "<<p.m_iX<<endl;//改動這里的調(diào)用方式
? ? ?cout<<"p_y: "<<p.m_iY<<endl;
? ? ?p--;//這里已經(jīng)實現(xiàn)了指針回指,上面就無需使用下標調(diào)用
?}
改成這樣試試