为什么输出来的不是那个数组里的内容呢

问题遇到的现象和发生背景

void Student::Max(Student* a) {

cout << "" << (void*)a << endl;

}
void main() {
int i;
Student arr[5];//建立对象数组
Student* p;
p = &arr[0];//指针指向数组首元素
arr[0].Set(1, 90);
arr[1].Set(2, 95);
arr[2].Set(3, 85);
arr[3].Set(4, 77);
arr[4].Set(5, 93);
for ( i = 0; i<5; i=i+2)
{
arr[i].Get();
}
arr[5].Max(&arr[2]);
}

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

Student 怎么定义的,特别是 set 和拷贝构造函数,检查下。