请问不是太理解 C++ Primer的“是指向int的指针”这句话。多谢

请教不是太理解 C++ Primer的“是指向int的指针”这句话。谢谢
C++ Primer Plus 第六版 第100页倒数第4行:
“注意:在C++中,int* 是一种复合类型,是指向int的指针”

指针不是某个变量的地址吗?怎么变成指向某种数据类型(比如inr)了呢?

------解决方案--------------------
char * p ; char型指针
p ++ ; 当这个操作允许的话,p向前移动sizeof(char)个字节

int *p; int型指针

p ++: 当这个操作允许的话,p向前移动sizeof(int)个字节

所以指针也分了不同的指针类型的 ,意义不一样!
------解决方案--------------------
引用:
Quote: 引用:

指针指向的确实是你所说的变量的地址 而指向int的指针 这句话的意思是 所指向变量的地址 所代表的值是int类型 也就是片面的说 这个指针的可以代表的变量地址的长度为int长度32位(假设4字节的int型为)

32位是指32 bit吗?

int 的机器字长 32bit  是这样的一个字节等于8bit
------解决方案--------------------
int *p1;
*p1 的意思取4个字节代表的一个值
char *p2
*p2 的意思是取1个字节所代表的值

比如内存区域 0到32位
p1取内存的连续4个字节所代表的值 32bit
p2取内存连续1个字节的所代表的值 8bit
存储时连续的线性内存
------解决方案--------------------
引用:
Quote: 引用:

char * p ; char型指针
p ++ ; 当这个操作允许的话,p向前移动sizeof(char)个字节

int *p; int型指针

p ++: 当这个操作允许的话,p向前移动sizeof(int)个字节

所以指针也分了不同的指针类型的 ,意义不一样!

我的理解是指针是一种数据类型吧
那么int 型指针和char型指针有什么区别呢?算是两种子类?
仅仅是移动的步长不同?

步长是最重要 最明显的差别了,其他的差别应该也有的!
------解决方案--------------------
int* pInt;

指针是指向某个变量的地址,对于int* pInt来说,pInt指向一个地址,这个地址存放的数据类型是int类型。
所以,pInt就是指向(int变量类型)的指针。
------解决方案--------------------
指针其实是一种形象的说法,其实就是存储某种类型数据的地址的数据。
数据-->有常数 或者叫字面值,enum 常量;
        常量表达式(常数运算后的结果,还是个常数,或者语言直接定义为常数的表达式,比如sizeof(int),sizeof(a),总之结果是个常数 ),其他常量,和变量。
那种,不是直接用常数,和常量表达式表示数据,而是象变量一样定义的数据,C中就不是常量、
常数 或者叫字面值,enum 常量;也可以看作常量表达式。
所以 C有常量表达式,变量形式的常量,两种常量数据,可称为常变量。
变量也是一种数据。

常变量,1)有名字,有地址,不可以变化;

其他常量,只有名字没有地址,或者只有地址没有名字(不能直接存取),或者二者都没有,仅仅是个数。
他们都是不可变的。
变量,有名字,有地址。可以变化。

C++ 
可以象变量一样,定义常量。
根据使用方式,不同用法,效果不同,可能有地址,也可能没有。

指针是一种数据。它的值表示一个数据的地址。
这个地址内部存放的数据,称为指针指向的数据。
如果该地址是个变量的地址,就称为指向变量的指针。

指针的类型,通常指的是,所指向的数据的类型。
而指针这种数据的类型, 是指向那种数据的指针。

数据,不一定,都是是变量。
于是就有常量指针和变量指针,以及各种指针的用法和规定。

指针,是附加数据类型的,地址数据,而不仅仅是地址,这么一个,没有其他任何信息的数据----一个整数或者整数的组合。










 



------解决方案--------------------
所以 ,C有常量表达式,变量形式的常量,两种常量数据,可称为常变量。
应为:
所以 ,C有常量表达式,变量形式的常量,两种常量数据,后者可称为常变量。
------解决方案--------------------
另外函数也是一种数据。
所以有函数指针。