指针数组使用的一些坑

2018-12-26  本文已影响0人  持戒行善

指针函数的返回值应该使用指针变量来接受,而不是指针常量

#include<stdio.h>
int *FindMaxMin(int a[],int n){
    int b[2];
    int max=a[0],min=a[0];
    int i;
    for(i=1;i<n;i++){
        if(a[i] > a[0]){
            max=a[i];
        }
        if(a[i]< a[0]){
            min=a[i];
        }
    }
    b[0]=min;
    b[1]=max;
    return b;
}
void main(){

    int a[]={1,2,3,4,5,6,7,8};
    int b[2];
    b=FindMaxMin(a,8);
    printf("最小值%d,最大值%d\n",b[0],b[1] );

}

数组名是指针常量而不是指针变量,因此不能接受指针函数的返回值

正确的形式应该是这样的:

int *FindMaxMin(int a[],int n){
    int b[2];
    int max=a[0],min=a[0];
    int i;
    for(i=1;i<n;i++){
        if(a[i] > a[0]){
            max=a[i];
        }
        if(a[i]< a[0]){
            min=a[i];
        }
    }
    b[0]=min;
    b[1]=max;
    return &b[0];
}
void main(){

    int a[]={1,2,3,4,5,6,7,8};
    int *b;
    b=FindMaxMin(a,8);
    printf("最小值%d,最大值%d\n",b[0],b[1] );
   
}

只需要复制给一个变量就行,剩下的事情指针变量会自动找到的,不需要担心

上一篇 下一篇

猜你喜欢

热点阅读