⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_55050.htm

📁 vc
💻 HTM
字号:
<p>
序号:55050 发表者:小豌豆 发表日期:2003-10-06 01:35:48
<br>主题:请教关于数组和const的问题
<br>内容:定义数组时要求维数是一个constant<BR>但是我希望维数由用户指定,请问应该怎么办?<BR><BR>我本来是要这样做的<BR>int n;<BR>cin&gt;&gt;n;<BR>const int m=0;<BR>int* pc=&amp;m;<BR>*pc=n;<BR>double a[m];<BR>这是根据《C++ Primer第三版[英文版]》page112页作的(<BR>const double minWage = 9.60;<BR>// ok? error?<BR>double *ptr = &amp;minWage;<BR>Should this be allowed? minWage is a const object, so it is guaranteed not to be written over with a<BR>new value. ptr, however, is an ordinary pointer, and there is nothing to stop us from subsequently<BR>writing<BR>*ptr += 1.40; // modified minWage!)<BR><BR>可是我用的是vc编译器,不支持这样的语法:(
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:水番 回复日期:2003-10-06 18:55:12
<br>内容:首先你这样写是很不规范的。<BR>其次你这样做是不行的。<BR>你想想const的机制和数组的机制就明白了。
<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-10-07 09:43:20
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;数组在定义的时候必须指定的他个数m,且m必须是编译时就要确定的,const int m = 0;表明了m是一个常数,他在编译时就确定,本身并不占内存。但是楼主用:<BR>&nbsp;&nbsp;&nbsp;&nbsp;int* pc=&amp;m; // 强行给m分配内存,并用内存的地址初始化pc<BR>这样使得m并不是编译时确定,他要运行时才知道。<BR>&nbsp;&nbsp;&nbsp;&nbsp;所以导致double a[m];出错。<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果希望维数由用户决定,那就用指针,更好的选择时用vector。<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>
回复者:coolleo 回复日期:2003-10-07 10:51:33
<br>内容:to:楼主<BR>const int m=0;<BR><BR>int* pc=&amp;m; ----//pc是int *,而&amp;m是const * ,so ,it's wrong。<BR><BR>还有c++primer的这个例子就是告诉你这种写法是错误的,再往下看点就有。<BR><BR>to水兄<BR>“数组在定义的时候必须指定的他个数m,且m必须是编译时就要确定的”,<BR>那么这样呢<BR>char [] c1=&#34;skjfidjfiejfh&#34;;//不指定也可以,但如果要指定就必须是编译常量。<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-10-07 10:53:32
<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>
回复者:coolleo 回复日期:2003-10-07 12:43:15
<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>回复者:coolleo 回复日期:2003-10-08 09:23:33
<br>内容:还有,如果你希望维数由用户指定,除了用容器外,还可用new分配的动态数组,只不过不经常用.<BR>#include&lt;iostream&gt;<BR>using namespace std;<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;int n;<BR>&nbsp;&nbsp;cin&gt;&gt;n;<BR>&nbsp;&nbsp;int *pn=new int[n];//这里可以不是编译常量<BR><BR>&nbsp;&nbsp;for (int index=0;index&lt;n;++index)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pn[index]=index;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;pn[index];<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;delete [] pn;<BR>}<BR><BR><BR>2003-10-8 9:26:24

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -