看了一份关于HR在面试一名C程序员可能提问的问题手册,学到了很多,很多都是一些琐碎的知识点,总是你写过很多大型的C程序,但是我敢说,里面也有你没掌握的东西。

1.全局变量和局部变量有何区别?

答:全局变量存储在静态存储区,局部变量存储在堆栈中,

疑惑:局部静态变量存储位置?

2.排序算法的时间复杂度?   

例如:冒泡排序----O(n^2)   怎么理解?

3.什么是虚函数?--C++中的一个函数的定义

4.不能做switch()的参数类型

答:switch()的参数不能为实型—即float型,可以为整型,char型。

5.局部变量能否和全局变量重名?

答:能,局部会屏蔽全局,也就是说,在函数体内部,只能访问到局部变量,而访问不到全局变量。

C++中若使用全局变量,需要使用符号∷ ;C中不能访问到全局。

6.static修饰全局变量、局部变量、函数与没有static修饰的有何区别?

答:⑴static修饰的全局变量与没有static修饰的在存储方式上并无区别,都是静态存储方式,区别在于static修饰的全局变量作用域是本文件内,没有static修饰的全局变量的作用域是整个源程序。

⑵static修饰的局部变量表明该局部变量是静态局部变量,仅在第一次调用该函数的时候对该变量初始化一次,没有static修饰的局部变量,系统默认该变量是auto型的自动变量,存储在栈空间当中,函数运行完之后,该变量的存储空间被释放掉。

⑶static修饰的函数表明该函数仅仅作用于本文件之内,并且该函数对外部文件来说是不可见的。没有static修饰的函数编译器默认是被extern修饰的,对于整个源程序来说都是可见的。

7.程序的内存分配

答:

①栈区(stack)-由编译器自动分配释放,存放函数的参数值和局部变量的值。

②堆区(heap)-由程序员申请并且由程序员释放。

③全局区(静态区)--全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域。

④文字常量区-常量符串就是放在这里的。

⑤程序代码的二进制代码。

8.堆和栈的区别

效率:

答:  栈是由系统分配的,速率较快,程序员无法控,

堆是程序员申请,由new分配的,一般速度较慢。

存储内容:

栈:函数调用的时候,第一个进栈的是主函数中下一条指令的地址,然后是函数的各个参数,参数一般是由右向左入栈的,然后是自动局部变量。     注:局部静态变量是不入栈的。

堆:……

存储效率:

char s1[] = “aaaa”;

char *s2 = “bbbb”;

aaaa是在运行时刻赋值的,而bbbb是在编译时刻赋值的,但是在以后的存储中,在栈上的数组比指针所指向的字符串快。

【三支火把】---C语言面试问题总结的更多相关文章

  1. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  2. C语言面试问答5

    12个滑稽的C语言面试问答——<12个有趣的C语言问答>评析(5) 前文链接:http://www.cnblogs.com/pmer/archive/2013/09/17/3327262. ...

  3. C语言面试问答(3)

    12个滑稽的C语言面试问答——<12个有趣的C语言问答>评析(3) 前文链接:http://www.cnblogs.com/pmer/p/3322429.html 5,atexit wit ...

  4. C语言面试基础知识整理

    一.预处理 1.什么是预编译?何时需要预编译? (1)预编译又称预处理,是做些代码文本的替换工作,即程序执行前的一些预处理工作.主要处理#开头的指令,如拷贝#include包含的文件代码.替换#def ...

  5. C语言经典面试题 与 C语言面试宝典

    1 预处理 问题1:什么是预编译?何时需要预编译? 答: 预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作.主要处理#开头的指令.如拷贝#include包含的文件代码.替换# ...

  6. c语言面试宝典(经典,超详细)

    c语言面试宝典(经典,超详细) 2018年08月25日 09:32:19 chengxuyuan997 阅读数:7799   摘自:https://blog.csdn.net/chengxuyuan9 ...

  7. 【三支火把】---C语言const用法总结

    C语言关键字const相信对于不少C语言新手是既陌生又熟悉的,好像经常见,但是却不知道为何用,怎么用?学习至此,总结一下const的用法,使用程序来帮助你理解该关键字,希望能帮到像我一样的新手. 我看 ...

  8. 【三支火把】---常用C语言控制台函数总结(持续更新)

    写了这么久的C程序,每次看到输出的结果都是从上往下排列的黑白框,有没有感觉很无聊啊?今天再次总结一个常用的控制台函数,能够帮助你做好一个好看的界面. 1.设置光标位置代码如下: int main(vo ...

  9. 【三支火把】---# program (n)以及C语言字符对齐的总结

    #pragma pack(n) 当n大于结构体中内存占用最大的变量内存时,将按照最大内存变量的字节占用数进行对齐,否则,就根据n进行对齐 情况一: 例一: #pragma pack(4) struct ...

随机推荐

  1. 对于shell脚本参数获取时的一点小技巧

    问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$ ...

  2. NPOI常用功能工具类

    public class NPOIHelper { /// <summary> /// DataTable导出到Excel文件 /// </summary> /// <p ...

  3. 开发安全的Web程序

    目录0x1:什么是安全的Web应用程序0x2:过滤输入的数据0x3:转义输出的数据0x4:Register Globals0x5:magic_quotes_gpc0x6:错误信息的报告0x7:文件的安 ...

  4. hdu 3718

    一个二分图最大匹配的题: 匈牙利算法不熟: 建了个模,用最小费用最大流解决了 #include <iostream> #include <cstring> #define IN ...

  5. [状压dp]HDU5045 Contest

    题意: n和人做m道题, 每俩人做的题数不能相差一题以上.(也就是每n道题分别由n个人完成)   给n个人分别做m道题的概率, 求完成m题的最大期望 $1\le N \le 10$ 注意!!! fil ...

  6. JavaScript获取HTML DOM节点元素详解(转)

    在Web运用程序特别是Web 2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要处理的疑问. 51CTO推荐阅读:JavaScript DOM文档 ...

  7. Linux下的绘图(流程图、UML、mindmap)工具

    http://blog.csdn.net/piyajee/article/details/5902380

  8. SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-001- DispatcherServlet的高级配置(ServletRegistration.Dynamic、WebApplicationInitializer)

    一. 1.如想在DispatcherServlet在Servlet容器中注册后自定义一些操作,如开启文件上传功能,则可重写通过AbstractAnnotationConfigDispatcherSer ...

  9. Android Service 生命周期和使用注意项

    一.基础知识 服务一般分为两种: 1:本地服务, Local Service 用于应用程序内部.在Service可以调用Context.startService()启动,调用Context.stopS ...

  10. Sum of Digits / Digital Root

    Sum of Digits / Digital Root In this kata, you must create a digital root function. A digital root i ...