*p和**p有什么不一样吗?
时间: 2024-06-25 16:01:15 浏览: 7
在C++中,`*p`和`**p`是两个指针运算符,它们用于访问内存中的数据。下面是它们之间的区别:
1. `*p`:这是解引用运算符,当你有一个指向某个变量的指针`p`,`*p`会获取该指针所指向的值。换句话说,它访问的是`p`地址存储的实际数据。
2. `**p`:这表示二级解引用,即当你有一个指向指针的指针`p`,`**p`会获取`p`所指向的指针所指向的数据。所以,它首先解引用`p`得到另一个指针,然后再次解引用这个新指针获取实际的数据。
简而言之,`*p`是一个单级间接,而`**p`是双级间接。使用场景上,`*p`通常用于访问基础类型的变量,而`**p`用于访问复杂的数据结构,比如数组或对象的成员。
相关问题
const char *p , char const *p 和 char *const p有什么区别
const char *p, char const *p和char *const p有以下区别:
1. const char *p和char const *p是一样的,它们都是指向常量字符的指针。这意味着指针p指向的字符是不可修改的,但指针本身是可变的,可以指向其他常量字符。也就是说,我们不能通过指针p来修改它所指向的字符的值,但可以通过p来改变它指向的位置。
2. char *const p是一个常量指针,它指向的字符是可变的,但指针本身是不可变的。这意味着指针p不能指向其他位置,但可以通过指针p来修改所指向字符的值。
3. const char *const p是一个既指向常量字符又是一个常量指针。它指向的字符是不可修改的,同时指针本身也是不可变的,不能指向其他位置。
总结来说,const char *p和char const *p都是指向常量字符的指针,但指针本身是可变的;而char *const p是一个常量指针,指向的字符是可变的;const char *const p既指向常量字符又是一个常量指针。
*p++与(*p)++的区别
*p++与(*p)++的区别如下所示:
1. *p++:这个表达式先取出指针p所指向的值,然后将指针p向后移动一个位置。换句话说,它先取值再移动指针。
2. (*p)++:这个表达式先取出指针p所指向的值,然后对这个值进行自增操作,最后指针p不发生移动。换句话说,它先取值再自增。
下面是一个C语言的例子来演示这两个表达式的区别:
```c
#include <stdio.h>
int main() {
int seat = 1534;
int *p = &seat;
printf("%d\n", *p++); // 输出:1534,先取值再移动指针
printf("%d\n", (*p)++); // 输出:1534,先取值再自增
printf("%d\n", *p); // 输出:1535,指针已经移动到下一个位置
return 0;
}
```
在这个例子中,我们首先定义了一个整型变量seat,并将其地址赋给指针p。然后,我们使用*p++和(*p)++分别对指针p所指向的值进行操作。最后,我们打印出了指针p所指向的值以及指针p的值。
需要注意的是,虽然*p++和(*p)++的语句返回的值是一样的,但它们最后的结果是不一样的。*p++会先取值再移动指针,而(*p)++会先取值再自增。因此,在使用这两个表达式时需要注意它们的不同效果。
相关推荐
![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)