2 baozhadehulu baozhadehulu 于 2015.05.29 15:20 提问

这程序编译无报错,运行时出错
c++
 #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   2015.05.29 15:53
已采纳
代码改成这样,亲测成功:

int a=0, b=0;

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

cin >> a >> b;

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

lfcxjcxj
lfcxjcxj   2015.05.30 01:55

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

yjwffgip456
yjwffgip456   2015.05.29 17:21

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

baozhadehulu
baozhadehulu Thank you.
2 年多之前 回复
baozhadehulu
baozhadehulu Thank you.
2 年多之前 回复
baozhadehulu
baozhadehulu Thank you.
2 年多之前 回复
nswcfd
nswcfd   2015.05.29 20:09

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

u012377333
u012377333   Rxr 2015.05.29 20:21

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

alwaysalex
alwaysalex   2015.05.29 21:01

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

q3733353520
q3733353520   2015.05.30 09:18

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

shuaishuaidefendi
shuaishuaidefendi   2015.05.29 15:53
代码改成这样,亲测成功:

int a=0, b=0;

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

cin >> a >> b;

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

Csdn user default icon
上传中...
上传图片
插入图片