c++类的指针定义

 我来答
蔺铭晨焦元
2020-03-03 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:779万
展开全部
intn=10;
int*p=&n;//不管是c还是c++这句都是对的
int*p=n;//不管是c还是c++这句都是错的!!!类型不匹配
在不同的地方*表示的含意是有区别的。
当*出现在类型定义时(类型之后的地方),如int*p;那这是告诉编译器变量p的类型为int类型的指针(int*),所以你还可以这样写int*p;或int*p;都是可以的。
而直接出现在变量后(不是定义时),就表示解引用.
int*p;
p=&n;
是先定义p为一个int型的指针,然后让p等于(指向)整型n的地址
而int*p=&n;变量p实际上是在定义的同时赋了初值,因此这里p前面的*是要和类型(也就是int)合起来看,表示p是一个int型的指针!此时,千万不要把*和p一起来看!
所以
int*p;//我有意把*写得和int靠拢一些:),强调int*是一种类型
p=&n;

int*p=&n;
是一回事
就好比:
inti;
i=n;

inti=n;
是一回事
而*p=*p+6;中p前面的*就是解引用符了
不要把概念搞混了啊,呵呵!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
守懿巨展
2019-05-04 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:737万
展开全部
不是,同样是new可是含义是不一样的。
对于int
*parray
=
new
int;这个的含义是在系统的堆空间上分配为int,也就是4个字节的空间给parray,这个时候parray里所指的值是没有含义的,如你所说没有定义值。
但是对于Intarray
*
parray
=
new
Intarray来说,会激发Intarray的构造函数,是否有意义则取决于Intarray的构造函数的内容了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式