C语言笔试一

来源:互联网 发布:nfc扫描身份证软件 编辑:程序博客网 时间:2024/04/26 22:08

1、局部变量能否和全局变量重名?

答:能,局部变量会屏蔽全局变量,要使用全局变量需要加“::”

全局变量全部存放在静态存储区存放的是需要占用固定存储单元的变量动态存储区存放函数的形参、自动变量
未加static声明的局部变量、函数调用实参的现场保护和返回地址。


2、如何引用一个已经定义过的全局变量?

答:可以采用关键字extern或引用头文件。


3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。


4、语句for( ;1 ;)有什么问题它是什么意思?

答:无限循环;和while(1)功能相同。


5、do……while和while……do有什么区别?

答:前一个是循环一遍再判断;后一个是先判断再循环。


6、用两个栈实现一个队列的功能?要求给出算法和思路?

答:设两个栈A和B,开始均为空

入队:将新元素push进栈A

出队:(1)判断B是否为空。(2)如果不为空,将栈A中的所有元素依次pop出并push进栈B。

            (3)将栈B的栈顶元素pop出,实现队列功能。


7、软件测试都有那些种类? 
答:黑盒:针对系统功能的测试 。   白合:测试函数功能和各函数接口。


8、 要对绝对地址0x100000赋值?要是想让程序跳转到绝对地址是0x100000去执行应该怎么做?

答:(1)可以用(unsigned int*)0x100000 = 1234。强制类型转换,转换成指针类型。

         (2)方法一:首先要将0x100000强制转换成函数指针,即:  (void (*)())0x100000 
                                   然后再调用它:   *((void (*)())0x100000)(); 
                   方法二:用typedef可以看得更直观些:   typedef void(*)() voidFuncPtr; 
                                    *((voidFuncPtr)0x100000)()。


9、已知一个数组table,用一个宏定义求出数据的元素个数? 
  答:#define NTBL 
  #define NTBL (sizeof(table)/sizeof(table[0]))


10、 线程与进程的区别和联系? 线程是否具有相同的堆栈? 

答:  进程是死的,只是一些资源的集合;真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。 
          每个线程有自己的堆栈。

      

 




1 0
原创粉丝点击