scanf函数可以给作用域不包含其函数体内的变量赋值,数组作实参时不加取地址操作符&,改变形参数组的数组元素就是改变实参数组的数组元素,这些都与指针有关。
程序中借助变量使用存储单元,而计算机中用地址标识存储单元。指针就是存储单元的地址,即存储单元的编号。指针变量就是存储了地址的变量。由指针变量得到地址,再借助地址就可以使用该地址标识的存储单元。通过指针变量使用其存储的地址的存储单元的方式称为“间接引用”。直接通过变量使用其标识的存储单元的方式称为“直接引用”。直接引用整型变量可以得到一个整数,直接引用指针变量可以得到一个地址。
以直接引用的方式使用存储单元受限于变量的作用域,但只要由指针变量得到地址,就可以在程序中的任何地方使用该地址标识的存储单元。指针扩展了存储单元的使用范围。得到地址的目的是使用存储单元,因此,遇到值为地址的变量或表达式,与地址的具体值相比,更关心它是哪个存储单元的地址。与钥匙的形状相比,更关心它是哪个箱子的钥匙。
数组标识了内存中地址连续的一组存储单元,只要确定首元素的地址,就能通过地址运算方便地确定任一个数组元素的地址。数组变量的值规定为其首元素的地址。数组元素以间接引用的方式使用,即表达式a[i]会转化为表达式(*(a+i))。二维数组的结构稍显复杂,在堆空间定义一个m行n列的二维数组有一定的难度。
指针变量存储的地址是指针类型存储单元时,就有指向指针类型的指针。函数也需存储&#x