指针是一种类型,指针变量是变量,不是一个东西。
就像int
与
int
j;
中
j的区别一样。
类型不实际占用内存空间,但是它有大小。比如int的大小是4,而它的实例j占用4个Byte。
指针本身也就是个地址,你的第三个问题没怎么看明白,
str
的确存的是你申请到的内存空间的地址,但pstr存的是str的地址。
关于使用内存查看器的问题,多级指针的话VS是带逐级展开功能的,请注意你看的是pstr本身还是它所指向的内容。
指针,其实就是一个内存地址
指针变量,就是存放内存地址的变量,也就是存放指针的变量,
这样说,通俗了吧,他们之类不应该讲区别,而是应该讲关系,
指针是一个地址,而指针变量时存放地址的变量。
*的意思是“指向”。
地址应该对应地址。
变量的指针就是变量的地址。
存放变量地址的变量是指针变量。
允许用一个变量来存放指针,这种变量称为指针变量。
因此,一个指针变量的值就是某个变量的地址或称为某变量的指针
比如:
int
a;//变量
int
*p;//指针变量
p=&a;//p就是变量a的指针,你可以叫它变量指针
可以这么理解,
指针指向的是一个地址,但这个地址里面可能是一个变量,也可以是个常量,或者是其它类型...