c语言笔试常见问题.doc

c语言笔试常见问题.doc

ID:51687699

大小:111.50 KB

页数:20页

时间:2020-03-15

c语言笔试常见问题.doc_第1页
c语言笔试常见问题.doc_第2页
c语言笔试常见问题.doc_第3页
c语言笔试常见问题.doc_第4页
c语言笔试常见问题.doc_第5页
资源描述:

《c语言笔试常见问题.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1—程序的内存分配1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释

2、放5、程序代码区—存放函数体的二进制代码。二、例子程序这是一个前辈写的,非常详细//main.cppinta=0;全局初始化区char*p1;全局未初始化区main(){intb;栈chars[]="abc";栈char*p2;栈char*p3="123456";123456在常量区,p3在栈上。staticintc=0;全局(静态)初始化区p1=(char*)malloc(10);p2=(char*)malloc(20);分配得来得10和20字节的区域就在堆区。strcpy(p1,"123456");123456放在常

3、量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。}2、Const和static区别对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.staticconst应该就是上面两者的合集.下面分别说明:全局:const,只读的全局变量,其值

4、不可修改.static,规定此全局变量只在当前模块(文件)中可见.staticconst,既是只读的,又是只在当前模块中可见的.文件:文件指针可当作一个变量来看,与上面所说类似.函数:const,返回只读变量的函数.static,规定此函数只在当前模块可见.类:const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.3newdelete和mallocfree的区别malloc与free是C++

5、/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库

6、函数。4main(){intx=10,y=10,i;for(i=0;x>8;y=++i)printf("%d%d",x--,y);}在循环语句for(表达式1;表达式2;表达式3)中,先执行表达式一,再执行表达式二,如果表达式二成立,就进入循环,第一次循环执行完后(本程序共两次循环),才执行表达式三(这是表达式三第一次被执行),然后再执行表达式二,看其是否成立,如果成立,就进行第二次循环。如此循环,表达式一只在第一次循环时执行,以后不再执行,表达式三在第一次循环不执行,以后的每次循环都执行。如果你要这是为什么,我只能说这是规定,

7、别的就不知道了。5什么是静态成员变量在C++类的成员变量被声明为static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。比如在某个类A中声明一个staticintnumber;初始化为0。这个number就能被所有A的实例共用。在A的构造函数里加上number++,在A的析构函数里加上number--。那么每生成一个A的实例,number就加一,每销毁一个A的实例,number就减一,这样,number就可以记录程序中共生成了多少个A的实例。

8、这只是静态成员的一种用法而已。6静态数据成员和静态成员函数在程序中是如何声明和定义的classFoo{public:staticinta;stataicvoidfunc();}静态数据成员和函数都是在声明前加static静态成员必须要在类外初始化,无法在构造函数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。