一些基础知识的测验

1.static有什么用途?(请至少说明两种)
    1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
    2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
    3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用


2.引用与指针有什么区别?
    1) 引用必须被初始化,指针不必。
    2) 引用初始化以后不能被改变,指针可以改变所指的对象。
    3) 不存在指向空值的引用,但是存在指向空值的指针。


3.描述实时系统的基本特性
      在特定时间内完成特定的任务,实时性与可靠性。


4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
      全局变量储存在静态数据库,局部变量在堆栈。


5.什么是平衡二叉树?
      左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。


6.堆栈溢出一般是由什么原因导致的?
      没有回收垃圾资源。


7.什么函数不能声明为虚函数?
      constructor函数不能声明为虚函数。


8.冒泡排序算法的时间复杂度是什么?
      时间复杂度是O(n^2)。


9.写出float x 与“零值”比较的if语句。
      if(x>0.000001 && x<-0.000001)


10.Internet采用哪种网络协议?该协议的主要层次结构?
      Tcp/Ip协议
      主要层次结构为: 应用层/传输层/网络层/数据链路层/物理层。


11.Internet物理地址和IP地址转换采用什么协议?
      ARP (Address Resolution Protocol)(地址解析協議)


12.IP地址的编码分为哪俩部分?
      IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。


13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
      循环链表,用取余操作做


14.
不能做switch()的参数类型是:
      switch的参数不能为实型。



1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中a的值(3分)
    int a = 4;
    (A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
    a = ?
答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;
    改后答案依次为9,10,10,11


2.某32位系统下, C++程序,请计算sizeof 的值(5分).
    char str[] = “http://www.ibegroup.com/”
    char *p = str ;
    int n = 10;
    请计算
    sizeof (str ) = ?(1)
    sizeof ( p ) = ?(2)
    sizeof ( n ) = ?(3)
    void Foo ( char str[100]){
        请计算
        sizeof( str ) = ?(4)
    }
    void *p = malloc( 100 );
    请计算
    sizeof ( p ) = ?(5) 
    答:(1)17 (2)4 (3) 4 (4)4 (5)4

 

3. 回答下面的问题. (4分)
(1).头文件中的 ifndef/define/endif 干什么用?预处理
答:防止头文件被重复引用


(2).#include <> 和 #include “filename.h” 有什么区别?
答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。


(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。

    由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。


4. 回答下面的问题(6分)
(1).Void GetMemory(char **p, int num){
        *p = (char *)malloc(num);
    }
    void Test(void){
        char *str = NULL;
        GetMemory(&str, 100);
        strcpy(str, "hello");
        printf(str);
    }
    请问运行Test 函数会有什么样的结果?
答:输出“hello”


(2). void Test(void){
        char *str = (char *) malloc(100);
        strcpy(str, “hello”);
        free(str);
        if(str != NULL){
            strcpy(str, “world”);
            printf(str);
        }
    }
    请问运行Test 函数会有什么样的结果?
答:输出“world”


(3). char *GetMemory(void){
        char p[] = "hello world";
        return p;
    }
    void Test(void){
        char *str = NULL;
        str = GetMemory();
        printf(str);
    }
    请问运行Test 函数会有什么样的结果?
答:无效的指针,输出不确定


来自http://hi.baidu.com/xzhzzz/blog/item/d7c82f10d4f552c4c3fd788a.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值