c语言交换两个整数值的错误
2010-06-03 17:02
232 查看
看看下面的一段程序有什么错误:
swap( int* p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
在
swap
函数中,
p
是一个
“
野
”
指针,没有初始化的情况下它有可能指向系统区,像这样强制赋值,可能导致程序运行的崩溃。
不可强制赋值,p = NULL后更不行,p没指向任何东西,它不可能有*p操作的在。
VC++
中
DEBUG
运行时提示错误
“Access Violation”
。
该程序应该改为:
swap( int* p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
在
swap
函数中,
p
是一个
“
野
”
指针,没有初始化的情况下它有可能指向系统区,像这样强制赋值,可能导致程序运行的崩溃。
不可强制赋值,p = NULL后更不行,p没指向任何东西,它不可能有*p操作的在。
VC++
中
DEBUG
运行时提示错误
“Access Violation”
。
该程序应该改为:
swap( int* p1,int* p2 ) { int p; p = *p1; *p1 = *p2; *p2 = p; } 或 swap2(int *a, int *b) { *a^=*b^=*a^=*b; } swap3(int *a, int *b) { *a = *a + *b; *b = *a - *b; *a = *a - *b; }
相关文章推荐
- C语言交换两个整数的值
- 黑马程序员-- C语言交换两个整数变量值几种函数比较
- C语言两个整数交换,a=b ,b=a
- c语言:4种方法;交换两个整数的位置(包括引入第三方变量和不引入第三方变量)
- 交换两个整数(形参和实参的用法) —— C语言
- 利用C语言来实现交换两个变量的值,由终端输入两个整数给变量x、y,然后交换x和y的值后,输出x和y。 有不同的方法
- c语言:4种方法;交换两个整数的位置(包括引入第三方变量和不引入第三方变量)
- 另一道看上去很吓人的面试题:如何交换a和b两个整数的值,不用额外空间 (Rev. 2)
- C语言之交换两个整型变量的值(四种方法)
- 【C语言】给定两个整型变量的值,将两个值的内容进行交换(不同方法)
- 【C语言】给定两个整型变量的值,将两个值的内容进行交换(不同方法)
- C语言实验——求两个整数之中较大者
- 实现两个整数交换总结
- 实现两个整数变量的交换
- 简单算法 - 交换两个整数的三种方法
- [置顶] 【C语言】交换两个数组内容(数组等大)
- 黑马程序员_C语言三种方法实现两个变量值的交换
- 用C语言实现给定两个整形变量的值,将两个值的内容进行交换。(4种方法)
- C语言交换两个变量数值的几种方法
- Java面试题---只用两个变量,如何做到把两个整数交换?