*p和(*)p的区别
时间: 2024-01-17 19:19:38 浏览: 41
*p和(*)p的区别如下:
- *p表示取指针p所指向的内存地址中的内容。
- (*)p表示将指针p所指向的内存地址作为一个整体,然后再取这个整体所指向的内存地址中的内容。
举个例子来说明:
假设有一个指针变量p,它指向内存地址0x1000,而0x1000中存储的内容是0x2000。那么:
- *p的值就是0x2000,表示取指针p所指向的内存地址0x1000中的内容。
- (*)p的值是0x2000所指向的内存地址中的内容,也就是0x2000中存储的内容。
所以,*p和(*)p的区别在于,*p是取指针所指向内存地址中的内容,而(*)p是将指针所指向的内存地址作为一个整体,再取这个整体所指向的内存地址中的内容。
相关问题
int*p 和*p的区别
`int* p` 和 `*p` 是 C 语言中的两种不同的语法表示方法,它们有以下区别:
1. `int* p`:这是一个定义指针变量的语法。在这种情况下,`p` 是一个指针变量,它指向一个整型数据。`int*` 表示 `p` 是一个指向整型数据的指针。
2. `*p`:这是一个解引用操作符。在这种情况下,`*p` 表示访问指针 `p` 所指向的内存中存储的值。如果 `p` 是一个指向整型数据的指针,那么 `*p` 就表示该指针所指向的整型数据的值。
以下是一个示例用法的比较:
```c
#include <stdio.h>
int main() {
int num = 10;
int* p = #
printf("Value of num: %d\n", num); // 输出:Value of num: 10
printf("Value of *p: %d\n", *p); // 输出:Value of *p: 10
*p = 20;
printf("Value of num: %d\n", num); // 输出:Value of num: 20
printf("Value of *p: %d\n", *p); // 输出:Value of *p: 20
return 0;
}
```
在上述示例中,我们定义了一个整型变量 `num`,然后声明了一个指向整型数据的指针 `p`,并将 `p` 初始化为 `&num`,即 `p` 指向了 `num` 变量。接下来,我们通过 `*p` 解引用操作符访问指针 `p` 所指向的内存中存储的值。在第一次打印中,我们分别打印了 `num` 的值和 `*p` 的值,它们都是相同的。然后,我们通过 `*p` 将 `num` 的值修改为 20,并再次打印了 `num` 和 `*p` 的值,它们同样也都是相同的。
总之,`int* p` 表示定义一个指向整型数据的指针变量,而 `*p` 表示访问指针 `p` 所指向的内存中存储的值。
C语言**p和*p的区别
在C语言中,`p`和`*p`是两不同的概念。
1. `p`是一个指针变量,它存储了一个内存地址。指针变量可以指向任何数据类型的内存地址。通过使用指针变量,我们可以访问或修改该内存地址上存储的值。
2. `*p`是通过指针间接引用所指向的内存地址上存储的值。它是一个解引用操作符,用于获取指针所指向的内存地址上存储的值。
简而言之,`p`是指针变量本身,而`*p`是通过指针变量间接引用所指向的内存地址上存储的值。