指针数组使用的一些坑

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

#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] );
   
}

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,848评论 3 44
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,075评论 2 9
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,160评论 1 51
  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 13,297评论 0 45
  • 又一次坐上了去学校的卧铺,我的暑假两个月就这样过完了,我的大一两个学期也悄悄溜走啦,时间真的过得好快。 ...
    土豆的土豆阅读 1,733评论 0 0

友情链接更多精彩内容