在C语言中,*p和&*p是一个意思吗
时间: 2024-05-03 19:18:22 浏览: 19
在C语言中,*p和&*p不是一个意思。
- *p是指针p所指向的变量的值
- &*p是指针p所指向的变量的地址
举个例子:
```c
int x = 10;
int *p = &x; // p指向x的地址
printf("%d\n", *p); // 输出x的值,即10
printf("%p\n", &*p); // 输出p所指向的地址,即x的地址
```
因此,*p和&*p虽然都涉及到指针p所指向的变量,但它们的意义是不同的。
相关问题
C语言中 **p和**pp的区别
在C语言中,`p`和`pp`通常用于指针的声明和打印。
* `p`通常用于声明一个指向指针的指针。例如,`int *p;` 声明了一个指向整数的指针。
* `pp`通常用于打印指针的值和地址。例如,`printf("%p", p);` 会打印指针`p`的地址。
两者主要的区别在于使用场景和目的。
* `p`通常用于声明一个指向特定类型的指针,而这个指针本身也是某种类型的指针。
* `pp`则主要用于打印指针的值和地址,这对于调试和了解指针的当前状态非常有用。
值得注意的是,这两种用法都依赖于指针的类型和它所指向的数据类型。在使用它们时,必须确保指针的类型正确,否则可能会导致未定义的行为。
在c语言中,*p和**p和***p有什么区别吗
在C语言中,*p,**p和***p是指针的不同级别。
- *p是指针变量p所指向的内存单元中存储的值。
- **p是指一个指向指针变量p的指针所指向的内存单元中存储的值。
- ***p是指一个指向指向指针变量p的指针的指针所指向的内存单元中存储的值。
例如,以下代码演示了这些指针的用法:
```
int a = 10;
int *p1 = &a;
int **p2 = &p1;
int ***p3 = &p2;
printf("%d\n", *p1); // 输出 10
printf("%d\n", **p2); // 输出 10
printf("%d\n", ***p3); // 输出 10
```
在这个例子中,p1是一个指向整数变量a的指针,p2是一个指向指针变量p1的指针,p3是一个指向指向指针变量p2的指针。因此,*p1,**p2和***p3都是对变量a的间接引用,它们都会输出10。
相关推荐
![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)
![](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)