问题描述
- 这程序编译无报错,运行时出错
-
#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;
解决方案二:
c的地址没有赋啊_…… *c=b的时候,哪个内存被赋值了呢?也许是意想不到的地方。
解决方案三:
兄弟你程序出问题了你要试着去调试程序。问题出现在哪里。这样会学会很多。因为程序不可能写出来百分百正确的。所以要学会调试。这一点很重要。
int a, b, *c;
std::cin >> a >> b;
*c = b;
你的程序C是一个指针。没有分配地址。你直接给他赋值是不行的。指针一定要分配一地址。才能赋值。
解决方案四:
*c = b,唉,编译器居然缺省都不产生一个warning,……
解决方案五:
很多实用指针的新手都会遇到的问题,指针在使用之前需要初始化。
解决方案六:
在main主函数中对指针*c 要当即初始化,最好令*c = 0
解决方案七:
c指针化错了,要指向b的地址,而不是b数据本身
解决方案八:
代码改成这样,亲测成功:
int a=0, b=0;
int *c = &b;
cout << "请输入两个数:" ;
cin >> a >> b;
cout<<"二者中较大的是:"<< Two(a, c) <<endl;
时间: 2024-10-04 11:03:19