若有定义int i=2,a[10],*p=&a[i];则与*p++ 等价的是?
时间: 2024-06-04 18:11:37 浏览: 29
&a[5];,则以下哪些语句是合法的?
1. a[i] = 3; // 合法,将a[2]赋值为3
2. p = &a[8]; // 合法,将p指向a[8]
3. *(p+2) = 5; // 合法,将a[7]赋值为5
4. p++; // 合法,将p指向a[6]
5. i = p - a; // 合法,将i赋值为3
6. *(a+i+1) = 7; // 合法,将a[4]赋值为7
7. p = a + i; // 合法,将p指向a[2]
8. a = p; // 不合法,a是数组名,不可被赋值
9. p = i; // 不合法,p是指针变量,不可被赋值为整型变量
相关问题
若有定义int a,*p=&i;则*&a等价于( )。
在定义 int a, *p=&a; 后,*&a 等价于 a,即取 a 的地址再取地址,再取值,最终得到的是 a 的值。这是因为 *& 这个操作符本质上是对一个指针进行解引用,也就是取指针指向的地址上的值,而 a 是一个整型变量,而不是指针变量,所以它的地址就是它本身,*&a 就相当于 *(&a),也就是对 a 取地址再取值,最终得到的就是 a 的值。
以下程序的输出结果是( int main() int a=10, b=20, *p=&a, **s=&p; p=&b; printi("%d,%d", *p,**5); return 0:
这段程序有语法错误,应该是:
```
#include <stdio.h>
int main() {
int a = 10, b = 20, *p = &a, **s = &p;
p = &b;
printf("%d,%d", *p, **s);
return 0;
}
```
程序的输出结果是:20,10。解释如下:
- `int a = 10, b = 20, *p = &a, **s = &p;` 定义了整型变量a和b,指针变量p和指向指针的指针变量s。p指向a的地址,s指向p的地址。
- `p = &b;` 将p指向b的地址。
- `printf("%d,%d", *p, **s);` 输出*p的值,即20,和**s的值,即a的值,为10。注意,**s等价于*p,即指向指针的指针所指向的值,即指向a的值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.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)