c语言中,定义float a[]={1.1,2.2,3.3},p=a; 为什么*(--p);*(p--)的区别,为什么前者不能引用数组中元素
时间: 2024-04-07 07:30:49 浏览: 17
在这个表达式中,`float a[]={1.1,2.2,3.3}, p=a;` 定义了一个数组 a 和一个指向数组 a 的指针 p,但是指针 p 的类型应该为 `float*`。因此,这里需要修改为 `float a[]={1.1,2.2,3.3}, *p=a;`。
对于表达式 `*(--p)`,它的执行顺序是先将指针 p 自减 1,然后再取出指针 p 指向的内容。这里的 `--p` 操作会让指针 p 指向未定义的内存空间,因此取出指针 p 指向的内容是无法正确引用数组中的元素的。
而对于表达式 `*(p--)`,它的执行顺序是先取出指针 p 指向的内容,然后再将指针 p 自减 1。这里的 `p--` 操作会让指针 p 指向数组的前一个元素,然后通过 `*` 取出该元素的值。因此,表达式 `*(p--)` 的值是数组 a 中的第一个元素 1.1。
因此,对于这个数组,`*(--p)` 是无法正确引用数组中的元素的,而 `*(p--)` 可以正确引用数组中的元素。需要注意的是,指针 p 的类型需要与数组 a 的元素类型相同,否则会出现类型不匹配的错误。
相关问题
c语言中,定义float a[]={1.1,2.2,3.3},*p=a; 为什么*(--p);*(p--)的区别
在这个表达式中,`float a[]={1.1,2.2,3.3},*p=a;` 定义了一个数组 a 和一个指向数组 a 的指针 p。
对于表达式 `*(--p)`,它的执行顺序是先将指针 p 自减 1,然后再取出指针 p 指向的内容。这里的 `--p` 操作会让指针 p 指向数组的前一个元素,然后通过 `*` 取出该元素的值。因此,表达式 `*(--p)` 的值是数组 a 中的第二个元素 2.2。
而对于表达式 `*(p--)`,它的执行顺序是先取出指针 p 指向的内容,然后再将指针 p 自减 1。这里的 `p--` 操作会让指针 p 指向数组的前一个元素,然后通过 `*` 取出该元素的值。因此,表达式 `*(p--)` 的值是数组 a 中的第一个元素 1.1。
因此,`*(--p)` 和 `*(p--)` 是有区别的,前者先进行自减操作再取值,后者是先取值再进行自减操作。需要根据具体需求来选择使用哪种表达式。
c语言中,定义float a[]={1.1,2.2,3.3},*p=a; 为什么*(--p);不能正确引用数组中的元素
在这个表达式中,*(--p) 的运算过程是先对指针 p 进行自减操作,然后再取出指针指向的内容。这里自减操作会让指针 p 指向数组 a 的前一个位置,即 p 指向了未定义的内存空间。因此,取出指针 p 指向的内容是无法正确引用数组中的元素的。如果想要正确引用数组中的元素,可以使用 *(p--) 或者 *(++p) 的方式。这样可以先取出指针 p 指向的内容,然后再对指针 p 进行自减或自增操作,指向下一个或上一个元素。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)