1 int main() 2 { 3 int x = 1; 4 int *p = &x; 5 *p = 4; 6 return 0; 7 }
生成的汇编如下
1 movl $1, -12(%rbp) x=1 压栈到 M(%rbp - 12) 2 leaq -12(%rbp), %rax 取&x 到寄存器 %rax *p = &x 3 movq %rax, -8(%rbp) p 压栈 4 movq -8(%rbp), %rax 读 p 到寄存器 5 movl $4, (%rax) p中的值 = 4
从以上得知,指针就是地址, *p 就是地址的中值。