参数和变量只存在于它们所在的函数内部。在main函数内部,没有phil这个东西存在。如果你想使用这个变量,编译器会报错。同样的,在printTwice内部,也没有argument这个变量。
类似这样的变量被称为局部变量。为了跟踪参数和局部变量,画一张栈图还是很有用的。像状态图一样,栈图展示出每个变量的值,然而变量都包含在大方框里,大方框表示变量所属的函数。
例如,printTwice的栈图如下:
每当函数被调用,就会创建此函数的一个实例。函数的每个实例都包含自己的参数和局部变量。上图中外面带函数名的方框代表函数实例,方框里面是函数的参数和局部变量。
此例中,main函数有一个局部变量argument,没有参数。printTwice没有局部变量,有一个参数phil。