#include
#include
using namespace std;
int main()
{
char* num= (char*)"4.56";
cout << "请输入:" << endl;
cin >>num;
cout << "输出后:" << atof(num) << endl;
system("pause");
return 0;
}
请求帮忙解答一下!十分感激!
首先,你的第9行就体现了一个非常不好的习惯:强制去const属性。"4.56"本来是一个const char *,你直接赋值给char*肯定出错,所以你用了个强制类型转换,而强制类型转换也是很不好的习惯。然后你的代码为什么不对呢,是因为"4.56"是在常量区的一个字符串,无法修改,而你又有一个cin>>num,这相当于修改常量区的内容了,肯定报错。还有,我用的C++20标准,现在都把operator>>(char*)这个去掉了,就是为了防备不安全的情况。
你明显是指针学得不扎实,好好复习下吧。
改成这样
#include
#include <stdlib.h>
using namespace std;
int main()
{
char num[]="4.56";
cout << "输出后:" << atof(num) << endl;
system("pause");
return 0;
}
指针要理解透彻,供参考:
#include <iostream>
using namespace std;
int main()
{
char* num = (char*)"4.56";//定义 char* num 为字符串常量。
//cout << "请输入:" << endl;
//cin >> num; //企图对常量作修改,是非法的。
cout << "输出后:" << atof(num) << endl;
system("pause");
return 0;
}