main() { int a[5]={1,2,3,4,5}; int * ptr=(int*)(&a+1); printf(“%d,%d”,*(a+1),*(ptr-1)); } 请问输出:
时间: 2023-12-18 22:03:04 浏览: 66
输出为“2,5”。
原因是:
- 表达式 `&a+1` 执行的是指针加法,其结果是指向数组 `a` 后面的一个未定义内存区域的指针。
- 将指针 `&a+1` 转换为 `int*` 类型,并赋值给指针变量 `ptr`。
- `*(a+1)` 表示数组 `a` 中下标为1的元素,即2。
- `*(ptr-1)` 表示指针 `ptr` 指向的内存地址减1后的值(即数组 `a` 的最后一个元素的值),即5。
相关问题
#include <stdio.h>void swap(int *pl, int *p2) { int p; p = pl; pl = p2; p2 = p;}int main() { int a = 5, b = 7, *ptr1, *ptr2; ptr1 = &a; ptr2 = &b; swap(ptr1, ptr2); printf("*ptr1=%d, *ptr2=%d\n", *ptr1, *ptr2); printf("a=%d, b=%d\n", a, b); return 0;}
程序中有一些错误,正确的程序应该是这样的:
```
#include <stdio.h>
void swap(int *pl, int *p2) {
int p;
p = *pl;
*pl = *p2;
*p2 = p;
}
int main() {
int a = 5, b = 7, *ptr1, *ptr2;
ptr1 = &a;
ptr2 = &b;
swap(ptr1, ptr2);
printf("*ptr1=%d, *ptr2=%d\n", *ptr1, *ptr2);
printf("a=%d, b=%d\n", a, b);
return 0;
}
```
程序的运行结果是:
```
*ptr1=7, *ptr2=5
a=5, b=7
```
程序中定义了一个函数 `swap`,它接受两个指向整数的指针作为参数,交换这两个指针所指向的整数的值。
在 `main` 函数中,定义了两个整数变量 `a` 和 `b`,并定义了两个指向整数的指针变量 `ptr1` 和 `ptr2`,分别指向 `a` 和 `b`。
然后调用 `swap` 函数,将 `ptr1` 和 `ptr2` 作为参数传递给它,交换它们所指向的整数的值。
最后输出 `ptr1` 和 `ptr2` 所指向的整数的值,以及 `a` 和 `b` 的值。由于在 `swap` 函数中交换了 `ptr1` 和 `ptr2` 所指向的整数的值,因此输出结果中 `*ptr1` 和 `*ptr2` 的值已经发生了交换,而 `a` 和 `b` 的值没有发生变化。
33、以下程序的运行结果是 -• #include void swap(int*pl, int*p2) {int p; p=*pl; *pl=*p2; *p2=p; } int main() fint a=5, b=7, *ptrl, *ptr2; ptri=&a; ptr2=8b; swap(ptrI, ptr2); print f"*ptrl=%d, *ptr2=%dn", *ptri, *ptr2); print f("a=%d, b=%dr", a, b); return(0); }
程序中有一些错误,正确的程序应该是这样的:
```
#include <stdio.h>
void swap(int *pl, int *p2) {
int p;
p = *pl;
*pl = *p2;
*p2 = p;
}
int main() {
int a = 5, b = 7, *ptr1, *ptr2;
ptr1 = &a;
ptr2 = &b;
swap(ptr1, ptr2);
printf("*ptr1=%d, *ptr2=%d\n", *ptr1, *ptr2);
printf("a=%d, b=%d\n", a, b);
return 0;
}
```
程序的运行结果是:
```
*ptr1=7, *ptr2=5
a=7, b=5
```
程序中定义了一个函数 `swap`,它接受两个指向整数的指针作为参数,交换这两个指针所指向的整数的值。
在 `main` 函数中,定义了两个整数变量 `a` 和 `b`,并定义了两个指向整数的指针变量 `ptr1` 和 `ptr2`,分别指向 `a` 和 `b`。
然后调用 `swap` 函数,将 `ptr1` 和 `ptr2` 作为参数传递给它,交换它们所指向的整数的值。
最后输出 `ptr1` 和 `ptr2` 所指向的整数的值,以及 `a` 和 `b` 的值。由于在 `swap` 函数中交换了 `ptr1` 和 `ptr2` 所指向的整数的值,因此输出结果中 `*ptr1` 和 `*ptr2` 的值已经发生了交换,而 `a` 和 `b` 的值也相应地发生了交换。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)