昏睡渐醒 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条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料