#include <iostream>
using namespace std;
class Student
{
public:
Student(int n,int s)
{
num=n;
score=s;
}
void display()
{
cout<<"num:"<<num<<" ";
cout<<"score:"<<score<<endl;
}
private:
int num,score;
};
int main()
{
Student s[5]={Student(1001,98),
Student(1002,80),
Student(1003,77),
Student(1004,85),
Student(1005,100)};
Student *p;
p=s;
(*p).display();
*(p+2).display();
*(p+4).display();
return 0;
}
报错提示:
(p+2)的地址确实是s[2],但这里不能这么用,你得用student类型指针去指向这个地址,才能解引用,不然不知道这个地址的类型,就无法使用*(p+2).display();这个方法去访问display()。否则,就只能通过(p+2)->display();去访问
#include <iostream>
using namespace std;
class Student
{
public:
Student() {
num = 0;
score = 0;
}
Student(int n, int s)
{
num = n;
score = s;
}
void display()
{
cout << "num:" << num << " ";
cout << "score:" << score << endl;
}
private:
int num, score;
};
int main()
{
Student s[5] = { Student(1001,98),
Student(1002,80),
Student(1003,77),
Student(1004,85),
Student(1005,100) };
Student *p;
p = s;
cout << "p:" << p << " p+2:"<<p + 2 << " p+4:" << p + 4<<endl;
(*p).display();
cout << "&s[2]:" << &s[2] << " &s[4]:" << &s[4] << endl;
Student *p2 = p + 2;
(*p2).display();
(p+2)->display();
Student *p4 = p + 4;
(*p4).display();
return 0;
}
#include <iostream>
using namespace std;
class Student
{
public:
Student(int n,int s)
{
num=n;
score=s;
}
void display()
{
cout<<"num:"<<num<<" ";
cout<<"score:"<<score<<endl;
}
private:
int num,score;
};
int main()
{
Student s[5]={Student(1001,98),
Student(1002,80),
Student(1003,77),
Student(1004,85),
Student(1005,100)};
Student *p;
p=s;
p->display();
(p+2)->display();
(p+4)->display();
return 0;
}