📄 subject_49393.htm
字号:
<p>
序号:49393 发表者:很菜 发表日期:2003-08-09 22:48:27
<br>主题:用new出现的问题
<br>内容:int *a,m,n,x,y;<BR>m=100,n=120<BR><BR>a=new int [n*m]; //能够申请到内存<BR>//由于出过一次错,我加了下面这段 赋初值<BR>for (x=0;x<m;x++)<BR>{<BR> for (y=0;y<n;y++)<BR> {<BR> a[x,y]=0;<BR> }<BR>}<BR>//上面这一段之后,好象都成了0<BR>接下来,在另一个函数用这样<BR>a[1,2]=1; //比如这样,接着,a[1,0->m]都成了1 !!!<BR><BR>为什么会这样?<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:野猫 回复日期:2003-08-09 23:09:53
<br>内容:我试了一下,不会出现你说的问题
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:很菜 回复日期:2003-08-09 23:39:20
<br>内容:那可能是我用的VC有问题吧!<BR><BR>我用VC建立exe的向导,建立出来之后,直接运行,<BR>当鼠标移到这个“刚建立”并“运行”的程序的工具栏的时候,<BR>就会出现非法操作,并退出这个程序<BR><BR>你们会不会出现这样错误?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:野猫 回复日期:2003-08-10 00:32:55
<br>内容:....重装吧
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:木一 回复日期:2003-08-10 03:32:36
<br>内容:a[x,y]=0;这种写法都有问题,是什么意思啊?BASIC语法吗?<BR><BR>改成a[x][y] = 0:试一下吧<BR>我现在没有安装编译器,没法验证.<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:野猫 回复日期:2003-08-10 14:04:26
<br>内容:a[x,y]和a[y]其实是一样的,楼主说的问题应该是a[1,2]=1;赋值后a[0->m,2]都为1吧?<BR><BR>改成a[x*n+y]的形式吧。<BR><BR>4楼说的改成a[x][y],这样好象就不能动态制定大小了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:很菜 回复日期:2003-08-10 18:03:26
<br>内容:多谢多谢!<BR><BR>我回家试试!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:VChen 回复日期:2003-08-11 11:53:39
<br>内容:这个不是NEW的问题,是你的a[x,y]的问题;因为在VC中逗号紧紧是一个表达式,所以a[x,y]相当于a[x],而后面的y是无意义的。我们可以这样调试,如下:<BR><BR>int *a,m,n,x,y;<BR>m=100,n=120<BR>int b; // 新添加的一个变量<BR>a=new int [n*m]; //能够申请到内存<BR>//由于出过一次错,我加了下面这段 赋初值<BR>for (x=0;x<m;x++)<BR>{<BR> for (y=0;y<n;y++)<BR> {<BR> b = x, y; // 变量b为x,y的值<BR> a[b]=0; // 或者 a[x,y] 是一样的<BR> }<BR>}<BR><BR>这样你就会发现b永远等于x,所以a[x,y]就等于a[x],因此你的数组是一个一维数组。我们把a[x,y]=a[x]代入,故a[1,2]=a[1,0->m]=a[1]。所以如果a[1,2]=1的话,所有的a[1,0->m]都等于1。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -