void swap(int *i,int *j) { int *x=NULL; *x = *i; *i = *j; *j = *x; }
时间: 2024-06-25 15:01:13 浏览: 8
这个函数`void swap(int *i, int *j)`是一个简单的C语言实现,它的作用是交换两个整数变量的值。函数接受两个整数指针`i`和`j`作为参数。函数内部首先定义了一个临时指针`x`并将其初始化为`NULL`。
接下来的三行代码是实现交换的核心部分:
1. 将`i`指向的值赋给临时变量`*x`,即把`i`指向的数值复制到`x`。
2. 将`j`指向的值赋给`i`所指向的位置,实现了`i`的值被`j`的值替换。
3. 最后,将`x`(现在存储了原来`i`的值)赋给`j`,实现了`j`的值也被`i`原来的值替代。
这样,调用这个函数后,`i`和`j`就分别指向了对方原来的值,完成了它们之间的值交换。
相关问题
wap( int* p1,int* p2 ) { int *p; *p = *p1; *p1 = *p2; *p2 = *p; }
这段代码是一个函数定义,函数名为Swap,接受两个int类型的指针作为参数。函数的功能是交换指针所指向的两个变量的值。在函数内部,定义了一个int类型的指针p,并将p1指向的值赋给p,然后将p2指向的值赋给p1,最后将p指向的值赋给p2。这样就完成了两个变量值的交换操作。
需要注意的是,在这段代码中,指针p没有进行初始化,这可能会导致未定义的行为。正确的做法是在定义指针p时,为其分配内存空间,例如使用动态内存分配函数new来分配内存空间。
正确的Swap函数实现应该是这样的:
void Swap(int *p1, int *p2) {
int *p = new int;
*p = *p1;
*p1 = *p2;
*p2 = *p;
delete p;
}
这样,在交换完值后,还需要释放指针p所指向的内存空间,以避免内存泄漏。
#### 引用[.reference_title]
- *1* [7.2【指针编程】编写一个函数Swap(int *p1,int *p2),利用指针实现两数据的交换](https://blog.csdn.net/qq_39977056/article/details/124062533)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [int *p1 = new int[10]; int *p2 = new int[10](); 区别](https://blog.csdn.net/boiled_water123/article/details/82941897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
#include <stdio.h> #include<stdlib.h> void input(int *&a,int & n); void output(int *a,int n); void comp(int *a, int n) ; void swap(int &a, int &b); int main () { int i,n; int *a = NULL; input (a,n); comp(a, n) ; output(a,n); free(a); return 0; } /**********定义函数**********/ /********** Begin **********/ /********** End **********/
这段代码是一个简单的排序程序,使用了选择排序算法。以下是对各个函数的解释:
1. `void input(int *&a,int & n)`:这个函数是输入函数,用于输入数组a和数组长度n。
2. `void output(int *a,int n)`:这个函数是输出函数,用于输出排好序的数组a。
3. `void comp(int *a, int n)`:这个函数是排序函数,用于对数组a进行排序。
4. `void swap(int &a, int &b)`:这个函数用于交换两个变量a和b的值。
在主函数中,先通过input函数输入数组a和数组长度n,然后调用comp函数对数组a进行排序,最后输出排好序的数组a。最后使用free函数释放动态分配的内存。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)