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

以下为源码,我照着一本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);
}

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

// 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);
//}

图片说明

int * minp(int *, int *);
int * min(int x, int y)

函数指针所指向函数参数类型与定义不一致! int*与int是不一样的!!

int * min(int ,int) 这个int * 不是函数指针,只是返回值是指针类型,我按照你的代码敲了一遍,只有scanf_s 改成了scanf ,一个一个输入,
结果并没有什么问题,也没有遇到你说的那个数值很大的问题,其实从函数里传出指针类型没什么问题,只要那块内存没有刚好被占用,数值
应该还是对的。