intp1;int**p2;intp3;都是合法的定义指针变量的语句
时间: 2024-04-10 18:30:33 浏览: 222
不是所有的定义语句都是合法的。根据你提供的信息,以下是对每个定义语句的分析:
1. `int p1;`:这是一个合法的定义,声明了一个名为 `p1` 的整型变量。
2. `int **p2;`:这也是一个合法的定义,声明了一个名为 `p2` 的指向指针的指针变量。这意味着 `p2` 可以存储一个指向指针的地址。
3. `int p3;`:同样,这是一个合法的定义,声明了一个名为 `p3` 的整型变量。
综上所述,根据提供的信息,所有的定义语句都是合法的。
相关问题
【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. #include stdio.h /****=*****ERROR*===* void swap(int *p1*p2) int p; p=*p1;*p1=*p2;*p2=p;
【程序改错】
功能:以下程序把两个数按由大到小的顺序输出来.
1. 缺少了头文件的尖括号 "<>"。
2. swap函数的参数中,指针类型的声明缺少了逗号。
3. swap函数中,变量p没有声明类型。
4. swap函数中,变量p的赋值语句缺少了分号。
5. swap函数中,指针变量*p1和*p2所指向的值应该互换。
改正后的程序如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main(void) {
int a, b;
scanf("%d%d", &a, &b);
if (a < b) {
swap(&a, &b);
}
printf("%d %d\n", a, b);
return 0;
}
void swap(int *p1, int *p2) {
int p = *p1;
*p1 = *p2;
*p2 = p;
}
```
题目描述 用指针变量对两个整数按从小到大排序。 C: #include <stdio.h> int main() { int *p1, *p2, *p; int a, b; scanf("%d%d", &a, &b); p1= &a; p2= &b; if (a > b) { /******************************* 请在该部分补充缺少的代码 ********************************/ } printf("min:%d\n", *p1); printf("max:%d\n", *p2); return 0; }
以下是对程序缺失部分的补充:
if (*p1 > *p2) {
p = p1;
p1 = p2;
p2 = p;
}
printf("min:%d\n", *p1);
printf("max:%d\n", *p2);
在if语句中,通过比较p1和p2指向的整数的大小,判断它们的大小关系。如果p1指向的整数大于p2指向的整数,则需要交换它们的指针变量的值,使得p1指向较小的数,p2指向较大的数。在交换指针变量的值时,需要借助一个临时指针变量p。最后,输出p1和p2指向的整数,即可得到按从小到大排序后的结果。
阅读全文