指针和数组的区别
#include "stdafx.h"
#define WIDTH 6
int max(int *, int );
int _tmain(int argc, _TCHAR* argv[])
{
int array[] = {4,3,6,2,8,6};
printf("The max is: %d\n",max( array, WIDTH));
return 0;
}
int max(int *p, int n)
{
int i,max;
for(i=0,max = (*p); i<n; i++)
if(max < *(p+1))
max = *(p+1);
return max;
}
我想用指针的形式来完成max函数,上面的max函数输出的结果为什么不是最大值,而是4呢。
[解决办法]
循环中没有p++
[解决办法]
int max(int *p, int n)
{
int i,max;
for(i=0,max = (*p); i<n; i++)
{
if(max < *p)
{
max = *p;
}
p++;
}
return max;
}
p + 1 是不会改变 p的指向的,你这样p就一直指向初始位置了
[解决办法]
if(max < *(p+1)) 因为你这里加的不是i,而是1