指针其实就是内存地址。在C/C++ 或者golang中会经常用到。用一张图来了解其中的原理吧。
正常的变量都是有内存地址的,可以理解为2部分: 值 + 内存地址
var => 值 :20 内存地址:x0001 (&var)
ip => 值:x00021(声明的时候会给一个默认的) 内存地址:x0002 (&ip)
蒋 var 的内存地址赋值给 ip
ip = &var 后 : ip 的值 x0001 内存地址 : x0002
*ip 就是 *x0001 可以理解为:内存中寻找地址等于: x0001 的
#include <stdio.h>
int main ()
{
int var = 20; /* 实际变量的声明 */
int *ip; /* 指针变量的声明 */
printf("var 变量的值: %d\n", var );
printf("&var 变量的值: %p\n", &var );
printf("*ip 变量的值: %d\n", *ip );
printf("ip 变量的值: %p\n", ip );
printf("&ip 变量的值: %p\n", &ip );
ip = &var; /* 在指针变量中存储 var 的地址 */
/* 在指针变量中存储的地址 */
printf("ip 变量存储的地址: %p\n", ip );
/* 使用指针访问值 */
printf("*ip 变量的值: %d\n", *ip );
printf("ip => %p",&ip);
return 0;
}