常见C语言问题的访谈.docx

  1. 1、本文档共138页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常见C语言问题的访谈

第一节 C语言编程中的几个基本概念1.1 #include 和#include 1. #include 和#include 有什么区别?这个题目考查大家的基础能力,#include 用来包含开发环境提供的库,#include 用来包含.c/.cpp文件所在目录下的头文件。注意:有些开发环境可以在当前目录下面自动收索(包含子目录),有些开发环境需要指定明确的文件路径名。1.2 switch() 1. switch(c) 语句中 c 可以是 int, long, char, float, unsigned int 类型?其实这个题目很基础,c应该是整型或者可以隐式转换为整型的数据,很明显不能是实型(float、double)。所以这个命题是错误的。1.3 const 1. const有什么用途?虽然const很常用,但是我相信有很多人仍然答不上来。(1) 欲阻止一个变量被改变,可以使用const 关键字。在定义该 const 变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;(2) 对指针来说,可以指定指针本身为 const,也可以指定指针所指的数据为 const,或二者同时指定为 const;(3) 在一个函数声明中,const 可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(4) 对于类的成员函数,若指定其为 const 类型,则表明其是一个常函数,不能修改类的成员变量;(5) 对于类的成员函数,有时候必须指定其返回值为 const 类型,以使得其返回值不为“左值”。1.4 #ifndef/#define/#endif 1. 头文件中的 #ifndef/#define/#endif 干什么用?其实#ifndef、#define、#endif这些在u-boot、linux内核文件中经常见到,在这么大型的程序中大量使用,可见它的作用不可小觑。这些条件预编译多用于对代码的编译控制,增加代码的可裁剪性,通过宏定义可以轻松的对代码进行裁剪。#ifndef/#define/#endif最主要的作用是防止头文件被重复定义。1.5 全局变量和局部变量1. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。其实,由于计算机没有通用数据寄存器,则函数的参数、局部变量和返回值只能保存在堆栈中。提示:局部变量太大可能导致栈溢出,所以建议把较大数组放在main函数外,防止产生栈溢出。思考:如程序清单1. 1所示。会出现怎样的情况?程序清单1. 1 大数组放在main函数中导致堆栈溢出int main(int argc, char *argv[]){ int iArray[1024 * 1024]; return 0;}第二节数据存储和变量2.1 变量的声明和定义1. 如程序清单2. 1所示会不会报错?为什么?如果不会报错,又是输出什么结果?程序清单2. 1 变量的声明和定义#includestdio.hstatic int a ;static int b[] ;int main( int argc , char *argv[] ){ printf( %d %d \n , a , b[0] ) ; return 0 ;}static int a = 8 ;static int b[4] ;这个程序是不会报错的,并且连警告都不会出现。输出的结果是:8 0static int a ,这句程序是声明全局变量a;static int b[],这句程序是声明全局数组变量b,并且是不完全声明,也就是可以省略数组下标。static int a = 8,这里才是定义全局变量a,static int b[4],这里是定义全局变量b。2.2 局部变量和全局变量的较量1. 请问如程序清单2. 2所示输出什么?程序清单2. 2 局部变量和全局变量#includestdio.hstatic int a = 8 ;int main( int argc , char *argv[] ){ int a = 4 ; printf( %d \n , a ) ; return 0 ;}C语言规定,局部变量在自己的可见范围内会“挡住”同名的全局变量,让同名的全局变量临时不可见。即在局部变量的可见范围内不能访问同名的全局变量。因此本程序输出为:4。2.3 char、int、float、double的数据存储1. 请问如程序清单2. 3所示,i和j输出什么?程序清单2. 3 数据存储flo

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档