用C语言的指针求二维数组中元素中的最大值。(求最大的元素值)

3*4的二维数组,设计一个函数,所求如题。要用指针来求!
#include<stdio.h>
void main()
{
void search(int *p,int n);
int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
search(a[0],4);
}
void search(int *p,int n)
{
int max=*p;
for(;(*p)!='\0';p++)
if(*p>max) max=*p;
printf("%d",max);
}

这是我写的程序 运行结果是:4394624。错在哪,请给我改正!拜托啦!
是跳出循环的条件错了,可是一时想不出怎么用什么条件?

#include<stdio.h>
void main()
{
void search(int *p,int n);
int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
search(a[0],12);//
}

void search(int *p,int n)
{
int max=*p;
for(;n>0;p++,n--)//
if(*p>max) max=*p;

printf("%d",max);
}

写了//的是我改过的地方
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-11
二楼真相,你的错误在于判断数组越界是用的(*p)!='\0'有误,又不是字符串,调试的时候编译器初始化了内存a以外的是0,所以能正确计算,但是真正运行的时候a以后的内存存的都是随机数,所以你的结果每次都不一样
第2个回答  2010-01-11
对啊,这是整形数组,不是字符数组,用\0没用吧?
第3个回答  2010-01-10
分数太少了 分多的话 我把程序传给你 现在没时间看