编译时确定的,还是运行时才能确定

JoshuaLi 2003-01-08 02:38:34
int main()
{
const int size = 10; //const 量
int size2 = 10;

int iarray [size]; // ok,编译时能确定元素个数
int iarray2 [size2]; // error,编译时不能确定
iarray;
iarray2;

return 0;
}


请教:
1. 请概括性地说明什么是编译时相关的(能确定的),譬如上述编译时就能确
定表达式的值一样,

2. 请概括性地说明什么是编译时不相关的(不能确定的),而是直到运行时才
能确定的,譬如上述编译时不能确定表达式的值一样,

...全文
187 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
JoshuaLi 2003-01-14
  • 打赏
  • 举报
回复
多谢,受教了
CaptainIII 2003-01-14
  • 打赏
  • 举报
回复
“这是标准库与stl的目的”我觉得这是stl的目的“之一”,再有就是泛形思维,我也在学习。
icansaymyabc 2003-01-14
  • 打赏
  • 举报
回复
对的
JoshuaLi 2003-01-14
  • 打赏
  • 举报
回复
是啊,这是标准库与stl的目的。我个人与你的观点一致。我在这个帖子里提出了一些小(菜)问题,很高兴得到这么多帮助。
liu_feng_fly 2003-01-14
  • 打赏
  • 举报
回复
我没有想争论什么,不过,如果你决定使用c++,那么,越早熟悉stl越好,使用vector,deque等等这些容器,可以避免下标越界,数组溢出等等常见的问题,使用string,可以比字符数组有更好的安全性,曾经,我写的一段数组就是因为字符数组溢出导致了一个bug,找了好久才找出来。所以后来下决心使用std;;string或者CString表示字符串。而且,stl里面还有各种算法,比如sort等等。
像你这个程序,只要
vector<int> vecINT;
vecINT.push_back(0);
...
根本不用关心数组有多大,只要你的内存足够,那么,有多少int你都可以push_back进去而不用担心会有什么内存问题,溢出问题等等。
smileknife 2003-01-14
  • 打赏
  • 举报
回复
学习ing
JoshuaLi 2003-01-13
  • 打赏
  • 举报
回复
受教了!
dumax__2002 2003-01-13
  • 打赏
  • 举报
回复
学从深处起,认真研读编译原理的书,理解起来自然得心应手。
tmj 2003-01-13
  • 打赏
  • 举报
回复
up
ruihuahan 2003-01-13
  • 打赏
  • 举报
回复
int iarray [size]; 是静态分配的内存,就是说在你的.exe载入时就分配好内存,内存的大小是在编译时确定的,所以分配的空间是一定的,所以C++的语法规则要求size的值必须为常量
JoshuaLi 2003-01-13
  • 打赏
  • 举报
回复
haw-haw liu_feng_fly, pls don't argue here,
liu_feng_fly 2003-01-13
  • 打赏
  • 举报
回复
to everandforever:
强,稳定从来不是问题,难道你写的程序就一个bug也没有?
JoshuaLi 2003-01-13
  • 打赏
  • 举报
回复
哼哼,几位却不关心我的问题,在我的地盘大喇喇言东言西,当我是透明的啊。不给你分 :)
CaptainIII 2003-01-13
  • 打赏
  • 举报
回复
看什么程序了,不过良好的风格的确重要。
everandforever 2003-01-13
  • 打赏
  • 举报
回复
我还是比较看重效率.
稳定从来不是问题.
liu_feng_fly 2003-01-13
  • 打赏
  • 举报
回复
to tony1978,使用vector或许会损失少许效率,但是,vector带来的好处要远远大于他在效率上的那一点点损失。因为,首先,一个系统应该是正确的,稳定的,然后才是效率:)
JoshuaLi 2003-01-13
  • 打赏
  • 举报
回复
效率是个问题,良好的风格习惯也重要。效率更多的是“机器的事”:D
突击召唤师 2003-01-13
  • 打赏
  • 举报
回复
楼上从来不考虑效率?
liu_feng_fly 2003-01-13
  • 打赏
  • 举报
回复
如果使用c++来写程序,总是应该用vector deque这些容器来替代传统的c数组,这才是问题的解决之道。
qrlvls 2003-01-13
  • 打赏
  • 举报
回复
你可以动态分配才行,因为你是在编译,不能按照运行的思维去理解
加载更多回复(17)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧