昏睡渐醒 2019-05-09 16:26 采纳率: 60%
浏览 865
已采纳

关于指针函数,将指针赋值为函数返回值时......

以下为源码,我照着一本C语言教材打的,定义了两个求较小的数的指针函数,但是输出的值总是很大的数字,而且和赋的值无关,请问这是怎么回事?

#include "pch.h"
#include

int main()
{
int * minp(int *, int *);
int * min(int x, int y);
int a, b, *p,*o;
scanf_s("%d,%d",&a,&b);
p = min(a,b);
printf("%d", *p);
o=minp(&a, &b);
printf("%d", *o);

}
int * min(int x, int y)
{
if (x < y)return(&x);
else return(&y);
}
int * minp(int *x, int *y)
{
int * q;
q = *x < *y ? x:y;
return(q);
}

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-05-09 16:33
    关注

    特别注意下,不要返回局部变量的指针,因为局部变量在堆栈上,函数返回,地址就是非法的了。

    // Q760646.cpp : This file contains the 'main' function. Program execution begins and ends there.
    //
    
    #include <iostream>
    
    #include <stdio.h>
    
    int main()
    {
        //int* minp(int*, int*);
        void min(int x, int y, int* p);
        int a, b, * p, * o;
        scanf_s("%d,%d", &a, &b);
        int p1;
        min(a, b, &p1);
        printf("%d", p1);
        //o = minp(&a, &b);
        //printf("%d", *o);
    
    }
    void min(int x, int y, int *p)
    {
        if (x < y) *p = x;
        else *p = y;
    }
    //int* minp(int* x, int* y)
    //{
    //  int* q;
    //  q = *x < *y ? x : y;
    //  return(q);
    //}
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况