若有int a[10],*p;p=&a[5];则p[-1]为什么是合法的.
时间: 2024-01-02 22:03:59 浏览: 35
在这个表达式 `p[-1]` 中,`p` 是一个指向 `a[5]` 的指针。在 C 语言中,对于一个指针变量 `p`,`p[-n]` 表示指针向左移动 `n` 个单位(在这里是移动一个单位),然后取得这个位置上的值。
因此,`p[-1]` 实际上就是 `*(p - 1)`,即指向 `a[5]` 的指针向左移动一个单位,指向了 `a[4]` 的位置,然后取得这个位置上的值,也就是 `a[4]` 的值。因此,`p[-1]` 是合法的。
相关问题
int a = 2; int *q = &a; int *p = q;时为什么q=a不合法
在C++中,&运算符可以获得一个变量的地址,而*运算符可以用来指向一个地址。在你的代码中,int *q = &a; 表示将变量a的地址赋值给指针变量q。因此,q指向了a的地址。
如果你想将q的值赋给a,应该使用 *q = a;,这样会将a的值赋给q所指向的地址中的内容,也就是a本身的值。而 q = a; 不合法,因为它试图将一个整数值赋给指针变量q,这是不允许的。
若有定义int i=2,a[10],*p=&a[i];则与*p++ 等价的是?
&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是指针变量,不可被赋值为整型变量
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)