int main() { int a,b,c,*pa,*pb,*pc; a=5;b=10; pa=&a;pb=&b;pc=&c; pc=pa; pa=pb; pb=pc; printf("a=%d,b=%d\n",a,b); return 0; }
时间: 2024-04-26 08:25:48 浏览: 89
这是一个简单的 C 语言程序,它的功能是交换指针变量的值。程序中定义了三个整数变量 a、b 和 c,以及三个整型指针变量 pa、pb 和 pc。变量 a 被初始化为 5,b 被初始化为 10,指针 pa、pb 和 pc 分别被赋值为 a、b 和 c 的地址。然后,通过指针 pc 将指针 pa 的值修改为 a 的地址,再通过指针 pa 将指针 pb 的值修改为 b 的地址,最后通过指针 pb 将指针 pc 的值修改为 a 的地址。程序执行完毕后,输出 a 和 b 的值。程序输出的结果为 a=10,b=5。
需要注意的是,指针变量的值是内存地址,指针变量本身也有自己的内存地址。在程序中,通过将指针变量的值互相赋值,实现了指针变量的值的交换,但是指针变量本身的内存地址并没有发生变化。
相关问题
/* experiment 9-1 */ #include<stdio.h> void main(void) { int a=10; int b=20; int *pa,*pb,*t=NULL; pa = &a; pb = &b; printf("交换前:a=%d b=%d\n",a,b); *t = *pa; *pa = *pb; *pb = *t; printf("交换后:a=%d b=%d\n",a,b); }哪里错了
实实验实验9实验9-实验9-1实验9-1是实验9-1是什实验9-1是什么实验9-1是什么?实验9-1是什么?请实验9-1是什么?请提实验9-1是什么?请提供实验9-1是什么?请提供更实验9-1是什么?请提供更多实验9-1是什么?请提供更多上实验9-1是什么?请提供更多上下实验9-1是什么?请提供更多上下文实验9-1是什么?请提供更多上下文信息实验9-1是什么?请提供更多上下文信息。
#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语句来输出交换后的结果。
阅读全文