Hello World.exe中0x0F828F0E(ucrtbased.dll)的未处理异常:0xC0000005:访问冲突写入位置0x00000002

时间:2017-07-07 11:41:41

标签: c++ stdio

我是C ++的新手,我昨晚开始学习

我需要以下错误的帮助:

Hello World.exe中0x0F828F0E(ucrtbased.dll)的未处理异常:0xC0000005:访问冲突写入位置0x00000002。

到目前为止我的代码:

#include <iostream>
#include <conio.h>
#include <stdio.h>

using namespace std;

int main() {

    cout << "CUMPARATURI" << endl;

    int mere = 3 + 1;
    int banane = 16 / 4;

    cout << endl;
    cout << "Avem " << mere << " mere" << endl;
    cout << "Avem " << banane << " banane" << endl;

    int a = 16, b = 18;

    cout << endl;
    cout << "Valoarea lui a este " << a << endl;
    cout << "Dati o valoarea noua lui a : "; cin >> a;
    cout << "Noua valoarea a lui a este : " << a << endl;

    cout << endl;
    cout << "Acesta este primul rand \nAcesta este al 2-lea \nAcesta este al 3-lea";
    cout << endl;

    printf("\nAceasta este valoarea lui a: %d ", a);
    printf("\nLocatia lui a este %d \nDa-i valoare noua lui a : ", &a);
    scanf_s("%d", a);
    printf("Noua valoare a lui a este : %d",a);

    _getche();
    return 0;
};

1 个答案:

答案 0 :(得分:0)

如果你看一下scanf_s documentation,你会发现想要读取数据的变量是在&之后写的。 &获取变量的地址,实际上scanf_s需要知道将结果写入内存的位置。

所以,你应该修改你的代码:

// Note '&a' instead of 'a'
scanf_s("%d", &a);

也就是说,在C ++中,您可能需要考虑std::cin将数据读入变量,例如:

int a{};
std::cin >> a;

请注意,在这种情况下,无需使用&地址 - )运算符。