&(取地址运算符)
是用来取变量的地址。例:&i 为取变量 i 的地址。对于常量表达式、寄存器变量不能取地址(因为它们存储在存储器中,没有地址)。
指针运算符*(间接寻址符)
与&为逆运算,作用是通过变量的地址,获取存储的内容。例:
int i = 1; //定义一个整型变量i,值为1
int* x; //定义一个整数类型的指针变量x
x = &i; //&i表示取变量i的地址,然后把这个地址赋值给指针变量x,即指针变量x存储着整型变量i的地址
printf("data = %d", *x); //*x表示取指针变量x的内容,由于x存储着i的地址,因此取i的地址中的内容1
结果为1。
(1)指针变量x是变量,这个变量x存储着另一个变量i的地址,指针变量x也有自己的地址
(2)x为另一个变量的地址,*x为地址中的内容
printf("data = %d", x)
结果为指针变量x的地址
printf("data = %d", *x)
结果为指针变量x的所指向地址中的数据