大家帮我看看,为什么不对。
调用findmax()函数,寻找数组中最大元素,将其下标通过参数返回,并返回其地址值。# include<iostream.h>
int *findmax(int *array,int size,int *index);
void main()
{
int a={33,91,54,67,82,37,85,63,19,58};
int *maxaddr;
int idx;
maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);
cout<<"the index of maximum element is"<<idx<<endl
<<"the address of it is"<<maxaddr<<endl
<<"the value of it is"<<a<<endl;
int* findmax(int array[],int size,int *index)
{
int *max=array;
int *temp=array;
for(int i=0;i<size;i++)
{if (*max<*array)
{temp=max;
max=array;
array=temp;
}
array++;
}
int *index=max;
return max;
}
13 C:\c++\8.1.cpp parse error before `{'
15 C:\c++\8.1.cpp `array' undeclared (first use this function)
(Each undeclared identifier is reported only once
16 C:\c++\8.1.cpp `size' undeclared (first use this function)
17 C:\c++\8.1.cpp `max' undeclared (first use this function)
谢谢! 谢谢,不过好像不对。
我理解一旦把数组作为参数传递到函数中,则在栈stack上定义了指针(实际上传递的是一个指针指向数组的第一个元素),可以对该指针进行递增,递减操作。
比较下面两例:
void Sum(int array[],int n)
{
int sum=0;
for(int i=0;i<n;i++)
{
sum+=*array;
array++;//ok,array is a pointer,可以作为左值。
}
cout<<sum<<endl;
}
int array;
int sum=0;
for(int i=0;i<100;i++)
{
sum+=array;
array++;//error,数组名是指针常量,不能作左值。
} 对不起,发上一贴时没看到你的新贴。我用temp太笨了:D,谢谢你!! 好像现在的开发工具都可以传递数组而无须考虑什么指针的问题。
至少我用Delphi是这样的。
所以,所以……觉得好像没有必要把这个问题搞得这么清楚……
随口说的,对此不负责任。 谢谢
页:
[1]