我很困惑C,因为我是新手。我知道1.1给了我最大值,1.2给了我最大值变量地址[Picture]。 我的问题是如何在main中调用* findmax函数?
int * findMax(int *a,int SIZE){
int i,max=*a,address,add;
for(i=0;i<SIZE;i++){
if(max<*(a+i)){
max=*(a+i);
}
}
//printf("maxium value is %d at index %x",max,&max);
return &max;
}
答案 0 :(得分:5)
函数定义中的*
不是函数指针,它是函数的返回类型。 findMax
函数返回一个指向整数的指针。所以你可以像在main中的任何其他函数一样调用它:
int a[] = {1,2,3,4};
int *p = findMax(a, 4);
还有另一个问题,在你的findMax
函数中,你返回了一个指向局部变量的指针,当函数返回时,变量的存储将不再可用。使用它会导致未定义的行为。所以你可以只将整数作为整数返回,如果你真的需要返回一个指针,你应该分配它,或者返回一个保持有效的指针。
例如:
int* findMax(int *a,int SIZE){
int i;
int *max = a;
for(i=0;i<SIZE;i++){
if(*max<*(a+i)){
max=a+i;
}
}
return max;
}
答案 1 :(得分:1)
#include<stdio.h>
int Max;
int* FindMax(int *a,int size)
{
int i;
Max=a[0];
for(i=0;i<size;i++)
{
if(Max<=a[i])
Max=a[i];
}
return &Max;
}
int main()
{
int a[10]={10,19,9,127,45,189,47,222,90,158};
printf("Address of Max Element:%p \n",FindMax(a,10));
printf("Max of Elements:%d \n",Max);
getchar();
return 0;
}