函数和*函数有什么区别?

时间:2016-04-25 03:06:32

标签: c function

我很困惑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;
        }

2 个答案:

答案 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;
}