返回信息流我怎么看就是一样的,可是放到visual c++ 2005就不一样了
==================
for(int i=0; i<10; i++)
p[i]=i;
===================
上面这段语句,int* p = new int[10] 根本没有分配空间,int p[10]倒是正常的
不明白这里是什么问题。。。。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #14853同步于 2008/10/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个超弱问题: int* p = new int[10] 和 int p[10]是什么区别
Chrainy
2008/10/28镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
这咋能一样呢?
int *p = new int [10]
在栈上声明了一个int类型的指针p,p代表了这个指针(32位机器上是4个字节)
在堆上申请10个int类型的空间,并将返回的地址写入p代表的那个空间。
int p[10]
在栈上预留10个int类型的空间,p代表了这个空间(32位机器上是40个字节),数值上和该空间第1个元素的地址相同。
re
一个数组一个指针,用着形式上可以一样,但是编译器解析时差别很大,C专家编程 对这个有明确的解释
【 在 ericyosho 的大作中提到: 】
: 这咋能一样呢?
: int *p = new int [10]
: 在栈上声明了一个int类型的指针p,p代表了这个指针(32位机器上是4个字节)
: ...................
en
【 在 lzlj 的大作中提到: 】
: 还有一个区别是:
: int p[10]后,p就相当于一个常量指针了,不能对其进行改变
: 而int *p=int[10],p是指针,可以重新赋其它值给它