zoukankan      html  css  js  c++  java
  • 【三支火把】---C语言面试问题总结

    看了一份关于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是在编译时刻赋值的,但是在以后的存储中,在栈上的数组比指针所指向的字符串快。

  • 相关阅读:
    【转】灰色在PPT中的运用
    [转]多多“亦”善:把大量内容放到一页PPT的5个技巧
    android应用程序的安装方式与原理
    oracle 数据库 date + 1 转载
    运行ant脚本(转载)
    Oracle修改字段类型方法总结(转)
    转载 jQueryEasyUI Messager基本使用
    oracle dmp数据导入
    oracle 查看表的索引信息
    sqlplus 分析执行计划
  • 原文地址:https://www.cnblogs.com/szhb-5251/p/5682196.html
Copyright © 2011-2022 走看看