VS2022使用atof函数时,写入访问权限冲突

我在用VSC++2022测试atof()函数
相关代码:
#include
#include
using namespace std;


int main()
{
    
    char* num= (char*)"4.56";
    cout << "请输入:" << endl;
    cin >>num;
    cout << "输出后:" << atof(num) << endl;
    system("pause");
    return 0;

}

img

请求帮忙解答一下!十分感激!

首先,你的第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;
}