未处理的异常。访问冲突

时间:2016-06-04 08:46:13

标签: c++ c++11 c++14 access-violation

我正在写一些像这样的C ++代码:

#include <iostream>
using namespace std;
void swap(int *a, int *b)
{
    int *c = NULL;
    *c = *a;
    *a = *b;
    *b = *c;
}
int main()
{
    int a, b;
    cout << "a, b: ";
    cin >> a;
    cin >> b;
    swap(&a, &b);
    cout << a << b;
    system("pause");
    return 0;
}  

但是在编译时,它说:&#34;未处理的异常......访问违规读取...&#34;。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:7)

您无法取消引用NULL指针作为swap方法当前的指针。幸运的是,您并不需要c作为指针 - 您只需要int来存储临时值:

void swap(int *a, int *b)
{
    int c = *a; /* Here */
    *a = *b;
    *b = c;
}