这程序编译无报错,运行时出错

 #include<iostream>
int Two(int a, const int* c)
{
    if(a >= *c)
        return a;
    else
        return *c;
}
int main()
{
    std::cout << "请输入两个数:" ;
    int a, b, *c;
    std::cin >> a >> b;
    *c = b;
    std::cout << "二者中较大的是:" << Two(a, c) << std::endl;
    return 0;
}
代码改成这样,亲测成功:

int a=0, b=0;

int *c = &b;
cout << "请输入两个数:" ;

cin >> a >> b;

cout<<"二者中较大的是:"<< Two(a, c) <<endl;

代码改成这样,亲测成功:

int a=0, b=0;

int *c = &b;
cout << "请输入两个数:" ;

cin >> a >> b;

cout<<"二者中较大的是:"<< Two(a, c) <<endl;

兄弟你程序出问题了你要试着去调试程序。问题出现在哪里。这样会学会很多。因为程序不可能写出来百分百正确的。所以要学会调试。这一点很重要。
int a, b, *c;
std::cin >> a >> b;
*c = b;
你的程序C是一个指针。没有分配地址。你直接给他赋值是不行的。指针一定要分配一地址。才能赋值。

*c = b,唉,编译器居然缺省都不产生一个warning,……

很多实用指针的新手都会遇到的问题,指针在使用之前需要初始化。

在main主函数中对指针*c 要当即初始化,最好令*c = 0

c的地址没有赋啊_…… *c=b的时候,哪个内存被赋值了呢?也许是意想不到的地方。

c指针化错了,要指向b的地址,而不是b数据本身