一个变量具有一个变量名,对它赋值后就有一个变量值,变量名和变量值是两个不同的概念。变量名对应于内存单元的地址,表明变量在内存中的方位,而变量值则是放在内存单元中的数据,也便是内存单元的内容。变量名对应于地址,变量值对应于内容,应以差异。
例如界说一个整形变量int x,编译器就会分配两个存储单元给x。假如给变量赋值,令x=30,这个值就会放入对应的存储单元中。尽管这个地址是由编译器分配的,但咱们是无法事前确认的,但可以用取地址运算符&取出变量x的地址,例如取x变量的地址用&x。
&x便是变量x的指针,指针是由编译器分配,而不是由程序指定的,但指针值可以用&x取出。
假如把指针(地址值)也作为一个变量,并界说一个指针变量xp,那么编译器就会别的拓荒一个存储单元,用于寄存指针变量。这个指针变量实际上成了指针的指针,例界说:
int *xp
经过句子xp=&x把变量x的地址值,存于指针变量xp中,现在拜访变量x有两种办法,一是直接拜访,别的是用指针直接拜访:*xp
在int *xp中的*和*xp中的*所代表的含义不同,int *xp中的*是对指针变量界说时作为类型阐明,而*xp中的*是运算符,表明由xp所指示的内存单元中取出变量值。