baozhadehulu
baozhadehulu
采纳率52.6%
2015-05-29 07:20

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

已采纳
 #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;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

8条回答

  • shuaishuaidefendi shuaishuaidefendi 6年前
    代码改成这样,亲测成功:
    
    int a=0, b=0;
    

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

    cin >> a >> b;

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

    点赞 1 评论 复制链接分享
  • q3733353520 我用双手-成就你的梦想 6年前

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

    点赞 1 评论 复制链接分享
  • lfcxjcxj lfcxjcxj 6年前

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

    点赞 1 评论 复制链接分享
  • alwaysalex alwaysalex 6年前

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

    点赞 1 评论 复制链接分享
  • u012377333 一枪尽骚丶魂 6年前

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

    点赞 1 评论 复制链接分享
  • nswcfd nswcfd 6年前

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

    点赞 1 评论 复制链接分享
  • yjwffgip456 yjwffgip456 6年前

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

    点赞 1 评论 复制链接分享
  • shuaishuaidefendi shuaishuaidefendi 6年前
    代码改成这样,亲测成功:
    
    int a=0, b=0;
    

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

    cin >> a >> b;

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

    点赞 评论 复制链接分享