c++ 为什么指针数组用二级指针指向呢

 我来答
dongyue2008
2011-09-24 · TA获得超过3602个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:579万
展开全部
每个数组都有一个类型,比如 int a[8]; 类型是 int ;float b[8]; 类型是 float。
既然 int 和 float 可以作为数组的类型,同样地 int* 和 float* 也可以。
动态开辟数组要用指针的方法。动态开辟 int 数组需要用 int * 指针,所以动态开辟 int* 数组就要 int** 指针啦。你明白了吗?
更多追问追答
追问
iint i=8;int*p=&i (这里的p 不是int指针么??) 为什么不可以 int**p1=p;呢
追答
int*p=&i; 这里 &i 是取 i 的地址,而 i 是int类型,所以 &i 的类型是 int*,与赋值号左边的 p 同类型,所以可以赋值。但是 int **p1 = p; 左边是 int**,右边是 int *,类型不一样,当然不能赋值啦,除非你强制类型转换,写成: int **p1 = (int*)p; 不过这样你使用 p1 的时候会出错,因为它现在保存的值不是真正的 int** 类型的。
QQ2450311215
2011-09-25 · TA获得超过299个赞
知道小有建树答主
回答量:681
采纳率:0%
帮助的人:358万
展开全部

这是改过的,你弄混了指针、引用和对象:
#include <iostream>
using namespace std;

class student
{
public:
void input();
int num;
int score;
};

void student::input()
{
cout << "请输入学号: " ;
cin >> num;
cout <<endl;
cout << "请输入成绩:";
cin >> score;
cout <<endl;
cout << endl;
}

void main()
{
student a[5];
for (int i=0; i<5; i++)
{
cout << i+1 <<": ";
a[i].input();
}
student *max(student&, student&);
student *p;
p = &a[0];
for (i=0; i<4; i++)
p = max (*p,a[i+1]);
cout << "max = " << p->num << " " << p->score <<endl;
}

student *max(student& c1, student& c2)
{
if ((c1.score) > (c2.score))
return &c1;
else
return &c2;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式