请问不是太理解 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)个字节
所以指针也分了不同的指针类型的 ,意义不一样!
------解决方案--------------------
int 的机器字长 32bit 是这样的一个字节等于8bit
------解决方案--------------------
int *p1;
*p1 的意思取4个字节代表的一个值
char *p2
*p2 的意思是取1个字节所代表的值
比如内存区域 0到32位
p1取内存的连续4个字节所代表的值 32bit
p2取内存连续1个字节的所代表的值 8bit
存储时连续的线性内存
------解决方案--------------------
步长是最重要 最明显的差别了,其他的差别应该也有的!
------解决方案--------------------
int* pInt;
指针是指向某个变量的地址,对于int* pInt来说,pInt指向一个地址,这个地址存放的数据类型是int类型。
所以,pInt就是指向(int变量类型)的指针。
------解决方案--------------------
指针其实是一种形象的说法,其实就是存储某种类型数据的地址的数据。
数据-->有常数 或者叫字面值,enum 常量;
常量表达式(常数运算后的结果,还是个常数,或者语言直接定义为常数的表达式,比如sizeof(int),sizeof(a),总之结果是个常数 ),其他常量,和变量。
那种,不是直接用常数,和常量表达式表示数据,而是象变量一样定义的数据,C中就不是常量、
常数 或者叫字面值,enum 常量;也可以看作常量表达式。
所以 C有常量表达式,变量形式的常量,两种常量数据,可称为常变量。
变量也是一种数据。
常变量,1)有名字,有地址,不可以变化;
其他常量,只有名字没有地址,或者只有地址没有名字(不能直接存取),或者二者都没有,仅仅是个数。
他们都是不可变的。
变量,有名字,有地址。可以变化。
C++
可以象变量一样,定义常量。
根据使用方式,不同用法,效果不同,可能有地址,也可能没有。
指针是一种数据。它的值表示一个数据的地址。
这个地址内部存放的数据,称为指针指向的数据。
如果该地址是个变量的地址,就称为指向变量的指针。
指针的类型,通常指的是,所指向的数据的类型。
而指针这种数据的类型, 是指向那种数据的指针。
数据,不一定,都是是变量。
于是就有常量指针和变量指针,以及各种指针的用法和规定。
指针,是附加数据类型的,地址数据,而不仅仅是地址,这么一个,没有其他任何信息的数据----一个整数或者整数的组合。
------解决方案--------------------
所以 ,C有常量表达式,变量形式的常量,两种常量数据,可称为常变量。
应为:
所以 ,C有常量表达式,变量形式的常量,两种常量数据,后者可称为常变量。
------解决方案--------------------
另外函数也是一种数据。
所以有函数指针。
C++ Primer Plus 第六版 第100页倒数第4行:
“注意:在C++中,int* 是一种复合类型,是指向int的指针”
指针不是某个变量的地址吗?怎么变成指向某种数据类型(比如inr)了呢?
------解决方案--------------------
char * p ; char型指针
p ++ ; 当这个操作允许的话,p向前移动sizeof(char)个字节
int *p; int型指针
p ++: 当这个操作允许的话,p向前移动sizeof(int)个字节
所以指针也分了不同的指针类型的 ,意义不一样!
------解决方案--------------------
int 的机器字长 32bit 是这样的一个字节等于8bit
------解决方案--------------------
int *p1;
*p1 的意思取4个字节代表的一个值
char *p2
*p2 的意思是取1个字节所代表的值
比如内存区域 0到32位
p1取内存的连续4个字节所代表的值 32bit
p2取内存连续1个字节的所代表的值 8bit
存储时连续的线性内存
------解决方案--------------------
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有常量表达式,变量形式的常量,两种常量数据,后者可称为常变量。
------解决方案--------------------
另外函数也是一种数据。
所以有函数指针。