int *pa,*pb,a=10,b=20; pa=&a,pb=&b; *pb=*pa; a=*pa+10; 执行上面的程序后,a的值为
时间: 2024-01-24 14:18:36 浏览: 26
20。
首先,将变量a赋值为10,变量b赋值为20,并且定义了两个指针pa和pb,分别指向变量a和变量b。然后将指针pb指向的变量b的值设置为指针pa指向的变量a的值,即*b=*a,此时a和b的值均为10。接下来,将变量a的值设置为指针pa指向的变量a的值加上10,即a=*pa+10,此时*a的值为20,因此最终a的值为20。
相关问题
以下代码能不能实现两数交换呢?为什么? int a = 10; int b = 20; int *pa = &a; int *pb = &b; int *pc = NULL; *pc = *pa; *pa = *pb; *pb = *pc; printf("%d %d\n", a, b);
这段代码无法实现两数交换,因为指针变量 `pc` 被赋值为 `NULL`,然后试图通过 `*pc = *pa` 将 `a` 的值赋给 `NULL` 所指向的内存空间,这是错误的操作,会导致程序崩溃。正确的做法是把 `pc` 指向 `a` 或者 `b` 的地址,即 `pc = &a` 或 `pc = &b`,然后再进行交换操作。修正后的代码如下所示:
```
int a = 10;
int b = 20;
int *pa = &a;
int *pb = &b;
int *pc = NULL;
pc = pa;
pa = pb;
pb = pc;
printf("%d %d\n", a, b);
```
输出结果为 `20 10`。
以下代码能不能实现两数交换呢?为什么? int a = 10; int b = 20; int *pa = &a; int *pb = &b; int *pc = NULL; pc = pa; pa = pb; pb = pc;
这段代码可以实现两个变量的交换。首先将变量 a 的地址赋值给指针 pa,将变量 b 的地址赋值给指针 pb。然后将指针 pa 的值(也就是变量 a 的地址)赋值给指针 pc,再将指针 pb 的值(也就是变量 b 的地址)赋值给指针 pa,最后将指针 pc 的值(也就是变量 a 的地址)赋值给指针 pb。这样就完成了变量 a 和变量 b 的交换。