C语言面试题
来源:互联网 发布:凸优化理论与应用 编辑:程序博客网 时间:2024/05/22 10:45
一. 全局变量与局部变量
1. 局部变量能与全局变量重名,但局部变量会屏蔽全局变量,若要使用全局变量,需要使用“::”。在函数内引用这个变量时,会使用到局部变量,而不是全局变量。
2.可以引用已经定义过的全局变量,一个使用关键词extern,一个使用引用头文件的方式。使用关键词extern,全局变量编写错误,在连接期间报错,而另外一种在编译期间报错。
3.全局变量头文件中可以定义在多个.C文件包含的头文件中,在不同的C文件中以static形式来声明同名全局变量,可以在不同的C文件中声明同名的全局变量,但是只能有一个C文件对该全局变量进行初始化赋值,否则会连接错误。
4.程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。
5.
(1)static全局变量与普通的全局变量的区别:static全局变量只初始化一次,防止在其他文件单元中被引用;
(2)static局局变量与普通的局局变量的区别:static局部变量只被初始化一次,下一次依据上一次结果值;
(3)static函数与普通函数的区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
6.队列先进先出,栈先进后出。
7.对于一个频繁使用的短小函数,在C语言中应用用宏定义实现。
8.确定模块的功能和模块的接口是在软件设计的概要设计阶段完成的。
9.线程是进程内的一个执行单位,也是进程内的可调度实体。线程与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位;
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行;
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源;
(4)系统开销:在创建或撤销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销。
10.Heap是堆,Stack是栈。Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。Stack空间有限,Heap是很大的自由存储区。C语言中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也是在栈上进行。
11.预编译就是指程序执行前的一些预处理工作,主要指#表示的。在以下两种情况下需要预处理:(1)总是使用不经常改动的大型代码体;(2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。可以将所有包含文件预编译为一个预编译头。
12.关键词const的含义:
(1)表示常量不可以修改的变量;
(2)可以修饰参数,作为输入参数;
(3)修饰函数,防止以外的改动;
(4)修饰类的成员函数,不改变类中的数据成员。
13.浅拷贝和深拷贝区别是什么:深拷贝拷贝的是内容,浅拷贝拷贝的是指针。深拷贝和浅拷贝最大的区别就是子类对象的地址是否改变,如果子类对象的地址改变那么就是深拷贝。简单的来说就是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存,采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。
- C语言面试题
- C语言面试题
- C语言面试题
- C语言面试题
- c语言面试题
- c语言面试题
- C语言面试题
- c语言面试题
- C语言面试题
- C语言面试题
- c语言面试题
- C语言面试题
- C语言面试题
- C语言面试题
- c语言面试题
- C语言面试题
- C语言面试题
- C语言面试题
- FZU 1004 || HOJ 1058 Number Triangles
- Spring框架的初步简单介绍
- 13.4.2 用计量单位格式化数据
- Directx中的拾取方法
- Windows 2008 R2 终端服务器授权安装配置
- C语言面试题
- poj2886Who Gets the Most Candies?
- 一款后台管理界面的好用框架
- hdu 5176 The Experience of Love
- java关于final和static的区别
- 挣值管理(PV、EV、AC、SV、CV、SPI、CPI)记忆之我见
- Android仿UC浏览器左右上下滚动功能(附源码)
- uva10441 - Catenyms 欧拉通路
- (API GUIDE 3)Intents and Intent Filters