void main(){ int a=5,*p1,**p2;p1=&a,p2=&p1;(*p1)++;printf("%d\n“,**p2);
时间: 2024-06-18 17:04:38 浏览: 18
这段代码的功能是将一个整型变量a的值加1,然后输出a的值。代码中定义了一个整型变量a,一个整型指针p1和一个指向整型指针p1的指针p2。首先将a的地址赋值给p1,然后将p1的地址赋值给p2。接着执行(*p1)++,即将a的值加1。最后输出**p2,即输出a的值。
需要注意的是,程序中使用了不推荐使用的void main()函数。正确的主函数应该是int main()。此外,在C语言中,指针操作需要特别小心,容易出现指针越界等问题,需要注意指针的有效性和正确性。
相关问题
#include<stdio.h> void swap1(int *p1, int *p2) { int t; t = *p1; *p1 = *p2; *p2 = *p1; } void main() { int a = 3; int b = 5; int* pa = &a, * pb = &b; if (a < b) swap1(pa,pb); }
这段代码中的swap1函数实现的是交换两个整数的值,但是代码中存在问题。在交换两个整数的值时,需要将第一个整数的值存储到一个临时变量中,然后再将第二个整数的值赋给第一个整数,最后再将临时变量的值赋给第二个整数。但是代码中的第三行 "*p2 = *p1;" 实际上是将第一个整数的值赋给了第二个整数,这样会导致两个整数的值相同,而不是实现交换。正确的代码应该是:
```
void swap1(int *p1, int *p2) {
int t;
t = *p1;
*p1 = *p2;
*p2 = t;
}
```
此外,main函数中没有输出结果的语句,你可以添加一个printf语句来输出交换后的结果。
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
```