#include <stdio.h> void main() { int a=3,b; int *p; *p=a; b=*p; printf("%d\n", b); a=100; b=*p; printf("%d\n",b); }
时间: 2024-05-16 13:15:09 浏览: 249
这段代码存在一些问题,可以修改如下:
```c
#include <stdio.h>
int main() {
int a = 3, b;
int *p = &a; // p 指向 a 的地址
b = *p; // b = a = 3
printf("%d\n", b);
a = 100; // 修改 a 的值
b = *p; // b = a = 100
printf("%d\n", b);
return 0;
}
```
修改说明:
1. `main` 函数应该返回 `int` 类型,而不是 `void` 类型。
2. 指针 `p` 需要指向变量 `a` 的地址,可以使用 `&a` 获取 `a` 的地址并赋值给 `p`。
3. 在第一个 `printf` 语句中,应该输出 `b` 的值而不是 `a` 的值。
4. 在第二个 `printf` 语句中,应该输出 `b` 的值而不是 `a` 的值。
相关问题
#include <stdio.h> int main(void) int a =20,b=20, *p,*q; p=&a;q=&b; printf("%d\n",q== p);]
这段代码存在语法错误,应该是这样的:
```c
#include <stdio.h>
int main(void) {
int a = 20, b = 20, *p, *q;
p = &a;
q = &b;
printf("%d\n", q == p);
return 0;
}
```
这段代码的作用是比较指针变量 `p` 和 `q` 所指向的地址是否相等,如果相等则输出 1,否则输出 0。由于 `p` 和 `q` 分别指向 `a` 和 `b`,而 `a` 和 `b` 的地址是不同的,因此 `q == p` 的结果是 0,所以程序会输出 0。
(完善程序) inv( ) 函数的功能是交换a和b两个变量的值。 #include <stdio.h> void inv(int *m,int *n ) { int p; p=*m; ________________ *n=p; } void main() { int a=3,b=6; inv(&a,&b); printf("%d,%d",a,b); }
inv函数中应该再加一行代码,用于将变量n的值赋给变量m,从而完成a和b的交换。修改后的代码如下:
```c
#include <stdio.h>
void inv(int *m, int *n) {
int p;
p = *m;
*m = *n;
*n = p;
}
int main() {
int a = 3, b = 6;
inv(&a, &b);
printf("%d,%d", a, b);
return 0;
}
```
输出结果为:
```
6,3
```
阅读全文