第1个回答 2012-09-29
编译的时候,把代码编译成obj的时候,就相当于执行了函数一次,不然怎么知道函数正确还是错误?编译完成后,关闭窗口,给变量分配的内存单元会释放。下次程序运行的时候,会再次给变量分配内存单元。本回答被网友采纳
第2个回答 2012-09-29
编译和运行,是两个不同的概念。
编译的时候,常量变量是在这个时候就决定了大小,如固定的数值,字符串。
char *s="hello";
函数中的变量是局部变量,是在运行的时候动态申请的,如果函数中也用到了常量变量,大小那也是在程序编译的时候产生的。由程序一开始运行就直接申请到内存中,在整个进程中都有效。
第3个回答 2012-09-29
编译时只是把程序转换成机器能识别的二进制,是静态的文件,怎么会分配内存单元呢?
只有当程序运行的时候才会分配内存单元
谭浩强的书很烂,表述不准确,代码页不注意风格,纯粹毒害新手
建议你看C Primer Plus
第4个回答 2012-10-07
在主程序中变量分配内存单元是在对程序编译时完成,函数中的变量空间分配是在调用该函数时完成。