若有以下定义int a[10],*p=a;则p+5表示 () A. 元素a[6]的地址 B. 元素a[6]的值 C. 元素a[5]的值 D. 元素a[5]的地址
时间: 2024-05-18 11:13:31 浏览: 32
由于数组名 `a` 可以看作是数组首元素地址的常量指针,因此指针变量 `p` 初始化为 `a` 的值,即指向数组首元素的地址。因此,`p+5` 表示指针向后移动了 5 个元素的大小,即向后移动了 5 个 `int` 类型的存储单元。
因为数组名 `a` 可以看作是指向数组首元素的指针,所以 `p+5` 相当于 `&a[0] + 5`,即第 6 个元素的地址,也就是元素 `a[5]` 的地址。
因此,选项 A 正确,`p+5` 表示元素 `a[6]` 的地址。
相关问题
若有定义int a,*p=&i;则*&a等价于( )。
在定义 int a, *p=&a; 后,*&a 等价于 a,即取 a 的地址再取地址,再取值,最终得到的是 a 的值。这是因为 *& 这个操作符本质上是对一个指针进行解引用,也就是取指针指向的地址上的值,而 a 是一个整型变量,而不是指针变量,所以它的地址就是它本身,*&a 就相当于 *(&a),也就是对 a 取地址再取值,最终得到的就是 a 的值。
int a[10],*p=a;p+5表示_
int a[10],*p=a;p+5 表示将指针 p 偏移 5 个单位后的位置,也就是指向数组 a 的第 6 个元素。注意,这里的单位是指指针所指向的数据类型的大小。因此,如果 p 是指向 int 类型的指针,那么 p+5 就是指向 a 的第 6 个元素,即 a[5]。
这里需要注意,p+5 是一个有效的表达式,但它并不一定指向一个合法的内存地址。因此,在使用 p+5 时应当注意越界的问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](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)