*(int*)p1-*(int*)p2
时间: 2023-11-23 08:06:16 浏览: 57
*(int*)p1-*(int*)p2是一个指针类型转换的表达式,它的含义是将指针p1和p2所指向的地址强制转换为int类型的指针,然后取出它们所指向的值进行相减。这个表达式的结果是p1所指向的int类型变量的值减去p2所指向的int类型变量的值。
举个例子,如果p1指向的int类型变量的值为5,p2指向的int类型变量的值为3,那么*(int*)p1-*(int*)p2的结果就是2。
相关问题
void swap(int *p1,int *p2) { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; }
以下是一个演示如何使用void swap(int *p1,int *p2)函数交换两个指针所指向的值的例子:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int num1 = 10;
int num2 = 20;
printf("交换前:num1 = %d, num2 = %d\n", num1, num2);
swap(&num1, &num2);
printf("交换后:num1 = %d, num2 = %d\n", num1, num2);
return 0;
}
```
输出结果:
```
交换前:num1 = 10, num2 = 20
交换后:num1 = 20, num2 = 10
```
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 ]