返回信息流我在看书的过程中遇到了两个容易搞混的概念,就是指针的类型和指针指向的类型。这两个概念到底有什么区别?
我在书上看的是假如说:int *ptr这样一个指针。
它的类型是int *,而它指向的类型就是int?它的类型是int *有什么意义?我不明白。希望各位大牛解释一下!谢谢~~~~
这是一条镜像帖。来源:北邮人论坛 / cpp / #18591同步于 2009/1/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]指针的类型与指针指向类型的区别
rayzl0523
2009/1/12镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
从右往左读: ptr是一个指针,指向int型对象
指针的类型就是指针指向的对象的类型
指针只能指向同类型的对象,int型指针指向int型对象,void*除外
int *类型的意思应该是 首先它是一个指针,其次它指向int型对象
【 在 rayzl0523 的大作中提到: 】
: 我在看书的过程中遇到了两个容易搞混的概念,就是指针的类型和指针指向的类型。这两个概念到底有什么区别?
: 我在书上看的是假如说:int *ptr这样一个指针。
: 它的类型是int *,而它指向的类型就是int?它的类型是int *有什么意义?我不明白。希望各位大牛解释一下!谢谢~~~~
实践多了就理解了
看看这个有没有帮助
附件(85KB)
【 在 rayzl0523 的大作中提到: 】
: 我在看书的过程中遇到了两个容易搞混的概念,就是指针的类型和指针指向的类型。这两个概念到底有什么区别?
: 我在书上看的是假如说:int *ptr这样一个指针。
: 它的类型是int *,而它指向的类型就是int?它的类型是int *有什么意义?我不明白。希望各位大牛解释一下!谢谢~~~~
“从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。”
【 在 tiemeng 的大作中提到: 】
: 指针的类型就是指针指向的对象的类型
: ...................
对哦,xx型指针
不过
int* p1, p2;
p1是int型指针
p2是int型对象
【 在 guo 的大作中提到: 】
: “从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。”
没看明白,为什么要在C++里面特别强调呢?
【 在 tiemeng 的大作中提到: 】
: 对哦,xx型指针
: 不过c++里需要主义的就是
: int* p1, p2;
: ...................
哦。。。这个这个。。。我的有问题。。
不懂c,刚刚才学c++,呵呵
【 在 ericyosho 的大作中提到: 】
: 没看明白,为什么要在C++里面特别强调呢?
指针的类型
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
(1)int*ptr;//指针的类型是int*
(2)char*ptr;//指针的类型是char*
(3)int**ptr;//指针的类型是int**
(4)int(*ptr)[3];//指针的类型是int(*)[3]
(5)int*(*ptr)[4];//指针的类型是int*(*)[4]
指针所指向的类型
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如:
(1)int*ptr;//指针所指向的类型是int
(2)char*ptr;//指针所指向的的类型是char
(3)int**ptr;//指针所指向的的类型是int*
(4)int(*ptr)[3];//指针所指向的的类型是int()[3]
(5)int*(*ptr)[4];//指针所指向的的类型是int*()[4]
更多的可以参考附件的文档,希望对你有所帮助。^_^
附件(70.5KB)