概念表达式含义比喻普通变量的地址a变量a在内存中的门牌号你家房子的地址普通变量的值a变量a里面存的内容10你家里住的人指针变量的地址p指针变量p自己的门牌号便利贴本子所在的抽屉指针变量的值p指针p里面存的地址即a便利贴上写的地址你家地址指针指向的值*p通过p存的地址去访问那个变量即a拿着便利贴上的地址去找家里住的人10给指针“存地址”改变指向的正确写法场景写法*的使用声明时同时初始化int *p a;声明时加*已声明后赋值p a;不加*声明时的*是类型的一部分表示“这是一个指针变量”使用时的*是解引用运算符表示“访问指针指向的变量”给指针赋值地址时用的是指针变量名本身不加*二维数组arr[][]地址与指针解析arr[0]的本意它是一个一维数组即第 0 行数组名退化规则在大多数表达式中如赋值、传参、算术运算数组名会退化隐式转换为指向其首元素的指针。arr的首元素是第 0 行arr[0]的首元素是第 0 行第 0 列退化规则表达式原始类型退化后类型退化结果说明arrint [][]int (*)[]arr[0]指向行数组的指针行指针arr[0]int []int *arr[0][0]指向第0行第0个元素的指针arr[0][0]int无退化无退化基本类型不退化注意取地址符可以得到“本体”的地址不会引发退化。三种地址的区别arr→ 整个数组的地址arr[0]→ 第 0 行的地址arr[0][0]→ 第 0 行第 0 列的地址三者起始地址相同但表示的范围步长不同。