“指针”是一种抽象的比喻。int *p
定义了一个变量p
,其内只能存放某个对象的地址,并且限定了该对象的数据类型是整数型。至于地址的含义,可以这么理解:代码中出现的变量存放在主机里存储器中的一个个存储单元中,每一个存储单元都有一个地址。
举一个例子:int a=3
就是定义了一个整数型的变量a
,其值为3,假设其在主机中的地址为xx00ff。那么执行int *p=a;
后,p
内的值就是a
的地址,即xx00ff。如果执行court<<p;
的话,终端打印的结果就是xx00ff。所以可以通过p
中的地址找到主机中对应的存储单元,然后取出其中的值。因此,“指针”是一个很形象的比喻。
上面的*
起到声明指针的作用,规定了p
内只能存放地址。如果先定义了Int *p;
,那么类似于p=a;
的赋值语句是错误的。因为a
的值为3,但是p
内只能存放地址,不能存放整数型的值。所以只能将a
的地址xx00ff赋值给指针变量p
,其语句为:p=@a;
。其中@
符号就是调取其后变量的地址。