*p
和 &p
是在C语言中用于处理指针的两种不同操作。
-
*p
:*
是解引用运算符,用于访问指针所指向的内存地址上的值。如果p
是一个指针变量,*p
就是该指针所指向的值。- 举例:如果有
int *p
,它是一个指向整数的指针,那么*p
就是该指针指向的整数的值。
-
&p
:&
是取址运算符,用于获取变量的内存地址。如果p
是一个变量,&p
就是该变量的地址。- 举例:如果有
int x
,那么&x
就是变量x
的地址。
综合来说,*p
用于获取指针 p
所指向的值,而 &p
用于获取指针 p
本身的地址。
举例:
int x = 10; // 定义一个整数变量 x,赋值为 10
int *p = &x; // 定义一个指向 x 的指针 p
printf("Value pointed to by p: %d\n", *p); // 输出指针 p 所指向的值(即 x 的值)
printf("Address of p: %p\n", (void *)&p); // 输出指针 p 本身的地址
运行结果