指向数组的指针。 为什么不同电脑上的结果不一样。

例如inta[100]=newint[100];for(inti=0;i<100;i++){a[i]=i;}for(inti=0;i<100;i++){cout<<a[i... 例如int a[100]=new int[100];
for(int i=0;i<100;i++){ a[i]=i;}for(int i=0;i<100;i++){ cout<<a[i];}这个程序在我的笔记本上不能正常运行,指针指的乱七八糟的,但是在我的台式机上就可以正常运行。
补充上源程序,这个在我台式机上输出是正确的,在笔记本上输出会出现常见的-33686019等等负数。
但是如果我这样将输出改为
printf("%d\n",new_out[i-100]);就是对的。
展开
 我来答
lzn1818
2012-06-29
知道答主
回答量:20
采纳率:0%
帮助的人:16万
展开全部
这个NEW 每次会强制分配,新空间,我举个例子,String a = new string("abc");String b = new string("abc");即使这样a!=b,因为当你new是系统会你新开辟你一个空间,每次运行都是不一样的。
你是用什么编译工具编译的;我觉得是不是说反了
我给你分析下,只有在new_out [i],取值才是有有效的,new_out [i-100] 【】中的i-100就是无效的i=0时 等于-100这就是无效的,结果当然是无效的。
mijc10
2012-09-21
知道答主
回答量:1
采纳率:0%
帮助的人:1586
展开全部
int a[100]=new int[100];这句定义本来就有问题!int a[100]相当于已经定义了一个数组a,并已经分配了内存地址。数组相当于指针常量,是无法改变地址的,而后面的=new int[100]显然是给它重新赋给新申请的内存地址,本来就错的,按理说无法编译通过。下面的按理说是正确的。还有,上面for循环语句中int i相当于重复定义,需要删除一个才能行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式