我正在写一些像这样的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;。我的代码出了什么问题?
答案 0 :(得分:7)
您无法取消引用NULL
指针作为swap
方法当前的指针。幸运的是,您并不需要c
作为指针 - 您只需要int
来存储临时值:
void swap(int *a, int *b)
{
int c = *a; /* Here */
*a = *b;
*b = c;
}