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

mir*_*aig -1 c function

我很困惑C,因为我是新手.我知道1.1给了我最大值,1.2给了我最大值变量地址[ 图片 ]. 我的问题是如何在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;
        }
Run Code Online (Sandbox Code Playgroud)

flu*_*ter 5

*函数定义不是一个函数指针,它是函数的返回类型.该findMax函数返回一个指向整数的指针.所以你可以像在main中的任何其他函数一样调用它:

int a[] = {1,2,3,4};
int *p = findMax(a, 4);
Run Code Online (Sandbox Code Playgroud)

还有一个问题,在你的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;
}
Run Code Online (Sandbox Code Playgroud)