int swap = *p; *p = *q; *q = swap
时间: 2023-10-21 11:36:54 浏览: 51
这段代码是一个交换两个变量值的通用函数,输入是两个指向变量的指针p和q,输出是p和q指向的变量的值进行交换后的结果。
具体实现是通过定义一个swap变量来暂存p指向的变量的值,然后将p指向的变量的值赋给q指向的变量,将q指向的变量的值赋给p指向的变量,从而实现两个变量值的交换。
需要注意的是,这段代码没有对输入的指针进行任何检查,如果p和q指向的变量为空指针,会导致程序出错。同时,在使用这个函数时,需要保证p和q指向的变量类型相同,否则会导致交换后的结果不正确。
相关问题
void swap(int* a,int* b) { int *p; *p=*a; *a=*b; *b=*p; }请指出这段代码的问题
这段代码的问题在于,它没有正确地交换a和b指向的变量的值。更具体地说,代码中的p指针没有被初始化,所以它所指向的内存地址是未知的。在第二行中,代码将a指向的值赋给了*p,但是*p所指向的内存地址是未知的,所以这个操作可能会导致未定义行为。正确的做法是需要先将p指向a指向的变量,然后再进行值的交换。
下面是修改后的代码:
```
void swap(int* a, int* b) {
int p;
p = *a;
*a = *b;
*b = p;
}
```
void swap1(int *p,int *q) { int temp=*p; *p=*q; *q=temp; }
这是一个函数定义,函数名为swap1,接收两个指针类型的参数p和q,函数体内进行了指针所指的变量值的交换操作。交换的过程是将p指向的变量值存储在temp中,然后将q指向的变量值赋给p指向的变量,最后将temp中存储的值赋给q指向的变量。