有关~指针数组c++

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:42:46
有a[100],b[100],c[100]...等10个int数组

要求取出所有这10个数组的最大值

求最大值的程序段很简单
int S=0;
for(i=0;i<100;i++)
{if(S-a[i]<0)
S=a[i];
}
但是,批量处理这10个数组的话要使用指针数组怎么实现?

我试过int *ptr[10]

但因为对指针数组使用不熟悉

程序总是出问题

求代码段~~

悬赏加送50分~~~
popahqiu亲:我要把这十个数组每一个数组的最大值都取出来进行处理,就是要取出10个值~

还有,为什么这种操作是不安全的?

gword亲:这是调用函数,不是指针数组。。不过这种方法也很好用~~

数组名可以作为指针使用 指向该数组的首地址
可以使用int *ptr[10]
将其中的每个元素赋值为那10个数组的首地址指针
ptr[0] = a;
ptr[1] = b;
ptr[2] = c;
......
ptr[9] = j;
(不过这种操作是不安全的)
(因为对指针的操作实际上就是直接对内存地址操作 对指针的任意运算有可能越过你所定义的数组的边界 那时指针所指向的内容是完全不可知的 这样的指针数据返回到程序中会导致严重的错误 所以部分编译器会严格检查指针的使用 适当给予警告或者报错)

要存10个最大值的话 可以用一个数组来存嘛
int S[10];
for(int i=0;i<10;i++)
for(int j=0;j<100;j++)
if(S[i]<ptr[i][j])
S[i]=r[i][j];

这样大循环10次 数组中就存入10个最大值

int fun(int * p,const int nSize)
{
int nMax = p[0];
for(int n=0;n<nSize;n++)
{
if(p[n]>nMax)
nMax = p[n];
}
return nMax;
}
void main()
{
//a[100],b[100],c[100]...
fun(a,100);
fun(b,100);
//....
}