wap( int *p1,int *p2 ) { int *p; *p = *p1; *p1 = *p2; *p2 = *p; }这段c代码怎么修改
时间: 2023-07-23 19:25:16 浏览: 124
这段 C 代码中有一个问题,即 `p` 指针没有初始化,会导致未定义的行为。应该将其改为:
```c
void wap(int *p1, int *p2) {
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
```
这样就可以正确地交换 `p1` 和 `p2` 指向的变量的值了。
相关问题
wap( int* p1,int* p2 ) { int *p; *p = *p1; *p1 = *p2; *p2 = *p; }
以下是对代码的分析和修改建议:
1. 代码中出现了段错误,是因为指针p没有分配空间,需要为其分配空间或者不使用指针。
2. 在函数wap中,指针p没有分配空间,导致段错误。为了解决这个问题,可以直接交换p1和p2指向的值,而不需要使用指针p。
```c
void wap(int* p1, int* p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
```
wap( int* p1,int* p2 ) { int * p; *p = *p1; *p1 = *p2; *p2 = *p; }
这段代码存在问题,因为指针变量 `p` 没有初始化就被解引用赋值,这会导致未定义行为,可能会导致程序崩溃或者出现其他不可预期的结果。
正确的方式应该是使用一个新的临时变量来保存 `p1` 所指向的值,然后将 `p1` 指向 `p2` 所指向的值,最后再将 `p2` 指向临时变量的值。例如:
```
void swap(int* p1, int* p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
```
这样就可以正确地交换 `p1` 和 `p2` 所指向的值。
阅读全文