【三支火把】---C语言面试问题总结

时间:2023-01-23 10:05:21

看了一份关于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语言面试问答&lpar;3&rpar;

    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. 【三支火把】---&num; program &lpar;n&rpar;以及C语言字符对齐的总结

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

随机推荐

  1. Java final 关键词修饰类、方法、变量

    1. final修饰类  被修饰的类不能被继承,也没有子类.假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节.出于安全原因,类的实现细节不允许有任何改动.在创建对象模型的时候,确信这个类不 ...

  2. Windows 10 技术预览版9926 &OpenCurlyDoubleQuote;未知源”引起系统休眠后自启的解决办法

    问题的由来: 自从安装上了最新发布的Windows 10 ,使用起来有诸多的改进:无论是重绘的图标还是通知消息中心的整合还是更智能的OneDrive客户端都使得工作起来非常愉悦. 不过笔者这两天频繁遇 ...

  3. javascript算法

    代码运行环境: nodejs + mochajs /* *选择排序 *每次查找数组最小数据 *将最小数据排到左侧 */ var assert = require('assert'); describe ...

  4. 第十二章 process&period;tar&period;gz中代码的运行

    第一部分:process 第二部分:env 第三部分:fifo 第四部分:pipe 第五部分:signal

  5. 【英语】Bingo口语笔记&lpar;26&rpar; - Take系列

    raincheck 改日 take .. off 在这里是请假的意思

  6. PL&sol;SQL在win7X 64下安装

    oracle11g怎么安装在此不作说明,网上到处都是,主要针对PL/SQL的安装配置 下载地址: PLSQL Developer: http://pan.baidu.com/s/1nt7G4cD X6 ...

  7. inand和emmc区别

    简单来说:inand式sandisk公司做的一款符合emmc标准的一个emmc存储器! ----

  8. 【maven学习笔记】 01 初见

    想学maven,maven是ant的替代品. 1:下载 maven是apache的*项目,在http://maven.apache.org/可以直接下载. 2:环境变量 下载完要配置环境变量,把bi ...

  9. client多线程

    1.多线程对象 对象可以是多线程访问,线程可以在这里分为两类: 为完成内部业务逻辑的创建Thread对象,线程需要访问对象. 使用对象的线程外部对象. 进一步假设更精细的划分.业主外螺纹成线等线,. ...

  10. 测试开发技术:DOM中 innerHTML、innerText、outerHTML、outerText的区别

    测试开发技术:DOM中 innerHTML.innerText.outerHTML.outerText的区别   我们在做web自动化的过程中通过dom处理web页面元素,那么你就要了解innerHT ...