《C语言简答题.doc》由会员分享,可在线阅读,更多相关《C语言简答题.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言简答题1、 C语言中,变量为何要先定义后使用?凡是未被事先定义的不作为变量名,这就能保证程序中变量名使用得正确,便于编译时发现错误,避免变量名使用时出错。每个变量被指定一确定类型,在编译时就能为其分配相应的存储单元。指定每一个变量属于一个类型,便于在编译时据此检查该变量所进行的运算是否合法。2、 举例说明在C语言中如何定义符号常量,使用符号常量的优点?#define 例如:#define AGE 35 #define M 1.9734067e9优点:1)简化书写格式、减少出错率。2)定义符号常量可以提高程序的可读性,便于程序的调试和修改。3)符号常量不同于变量,在其作用域内不能被改变和重
2、新赋值。4)习惯上人们把符号常量名用大写字母表示,变量用小写,以示区别。3、 字符串是以0结束的,存储一个字符串需要多少个字节?如“ABC”实际需要3+1个字节来存储这个字符串常量。4、 while和do while两种循环结构的相同点和不同点是什么?do-while语句和while语句的区别在于 do-while 是先执行后判断,因此do-while至少要执行一次循环体。而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。while语句和do-while语句一般都可以相互转换。5、 C语言中,什么基本数据类型不能做switch()的参数?只能针对基本数据类型使用switch
3、,这些类型包括int、char等。对于其他类型如long /float /double,则必须使用if语句。6、 二维数组的定义和初始化的正确形式有哪些?1) 分行,如:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 2) 按数组排列的顺序将所有数据写在一个花括号内,如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;3) 部分元素初始化。如:int a34= ,1,0,6,0,0,11;4)如果对全部元素都赋初值,则定义数组时可以不指定第一维的长度,如:int a4=1,2,3,4,5,6,7,8,9,10,11,12;7、 C语言中进行函数声明
4、的作用是什么?函数声明的作用是:把函数的名字、函数类型及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照和检查(例如,函数名是否正确,实参的类型和个数是否一致)。8、 带参的宏与函数有什么区别?1.函数调用,求出实参表达式的值,再带入形参。而宏只进行简单的字符替换。2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。3.对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,无类型,只是一个符号代表,展开时带入指定的字符即可。宏定义
5、时,字符串可以是任何类型的数据。4.调用函数只可得到一个返回值,而用宏可以设法得到几个结果。#include #define PI 3.1415926#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*R void main() float r,l,s,v; scanf(%f,&r); CIRCLE(r,l,s,v); printf(r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn,r,l,s,v);5.使用宏次数多时,每展开一次都使程序增长,而函数调用不使源程序变长。6.宏不占运行时间,只占编译时间;函数占运行
6、时间(分配、保留、值传递、返回)。9、 C语言变量的存储特性可分几类?以及各类的特点?四种:自动变量(auto)、静态变量(static)、外部变量(extern)以及寄存器变量(register)。1.自动变量:函数中所有的非静态局部变量。其作用域仅仅局限于其定义的函数中,存储在动态存储区,在没有显式初始化的时候,其变量的值是随机无用的。随着函数的进栈和出栈而创建和销毁。2.静态变量:在变量前加上static关键字的变量。存储在静态存储区,在没有显式初始化的时候会被初始化为0或者null,并且只初始化一次(初始化不等同于赋值)。长期存在静态存储区,直到程序结束 静态全局变量:作用域只是在其定
7、义的源文件中有效,对外部变量起到了“屏蔽”的作用。静态局部变量:其作用域是其定义的函数中。 3、外部变量:一般用作全局变量作用域的扩展。把全局变量在其他源文件中声明成extern变量,可以扩展该全局变量的作用域至声明的那个文件,其本质作用就是对全局变量作用域的扩展。长期存在静态存储区,直到程序结束。 4、寄存器变量:一般经常被使用的的变量(如某一变量需要计算几千次)可以设置成寄存器变量,register变量会被存储在寄存器中,计算速度远快于存在内存中的非register变量。存储在cpu的寄存器中,速度快,一般不需要程序员定义寄存器变量,这是由于一些编译器会把需要参加很多次计算的变量转化成寄存
8、器变量,不允许程序员对寄存器变量的地址进行操作。离开函数值就会消失。10、C语言中,动态存储区主要存放哪些数据?动态存储区中存放以下数据:函数的形参;函数调用时的现场保护和地址等;auto/register 型局部变量。对以上数据,当进行函数调用时分配动态存储空间,当函数调用结束时,释放这些存储单元。在程序的执行过程中,这种分配和释放是动态的。11、 static声明有什么用途 (请至少说明两种)?static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?1.限制变量的作用域;设置变量的存储域;2.全局变量的说明之前再加
9、以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域
10、, 限制了它的使用范围;3.static局部变量只被初始化一次,下一次依据上一次结果值;4.static作用域仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。12、使用全局变量的优点和副作用是什么?优点:所有函数之前定义的全局变量可被本文件中所有函数共用;全局变量的有效范围是它定义
11、的位置到本源文件结束;全局变量增加了函数之间的联系通道;全局变量与局部变量重名时,在函数内部将屏蔽全局变量。副作用:过多的全局变量时函数之间的“耦合性”增加,不利于程序的移植;过多的全局变量使程序的可读性变差;外部变量可加强函数模块之间的数据联系,但又使这些函数依赖这些外部变量,因而使得这些函数的独立性降低;从模块化程序设计的观点来看这是不利的,因此不是非用不可时,建议不要使用外部变量;全局变量在程序执行的全过程都占用存储单元。13、 指针有哪些运算?以及指针编程的优点?算术运算、关系运算、赋值;提高程序的编译效率和执行速度;可向调用函数处返回除正常的返回值之外的其他数据,从而实现两者间的双向
12、通信;利用指针可以实现动态内存分配;直接操纵内存地址;更容易实现函数的编写和调用。14、 C语言中,*(星号)运算符有几种用途?并分别举例说明。 指针符号;乘法运算符;字符;注释。4 释;算;。说别并用符运星,用用编现实址存纵直内动以用信向间实,他的回常除处用可行率译值、算、点优针以运哪元储用过的程变全部用不时用是,不这观计序从降独的得而变些依些这系联之数强变;性的程量多植的利,性“间时变多量变蔽部在名量与局;联之了加全束源到位定范的变共函件被变全前函有么是副优变局中堆在数态中态于存局,(在部序程持用个在函一只存 件头含件的函使明中文该数的使源在对定说件前应部) 函内该函使件源。文在 值果上次
13、,化初变局 围用的限域用了是量变改把期生变式储变是态为变把看析上误起件其避可,数内该能件个限域的全静。用件源序源在内文变义即用了则局全。是件个量全静时组源由个当源是作量态于在的。同式方两这存静也量静式态就量全变的了就 加之的变域存变;用量别区数普函 别么变普量局 区有全普与 两少(用有 的动放配这中的在单储释时用数空存动调行当上以变型 ;地场的用;形据以存区据数放主存, 失会值离作进地存员程不变成量算多加把译些由量存寄员不一度,的 存量 非中存于速中器存量 量寄设)千计变如量用常经变寄 束束到区静期展扩作变就质本个的域用局展可变 声中其量全扩用作局一量、中数义其用量部。”“到量对中源义是域量全
14、 结程,存在期值同不初化初且 者化始候化显有储静存变键 加量:毁和建出的函。用是变候时式没区存储,的其限仅作量部非中函动) 变存) (、 量态、 (点的各以几储存)返递留、(行函;编间运不长序使用数增序一每多次;), , % .% =,% , ) % , ) * *. ; ( 果结得以用值个得数用据数型以可时定即字指带,代是,型存宏转型,致致要类二类都形的数念概值返,递传进单配分开的进编开宏单的临,处运程数换符字进宏。带的式实,别区有与)致数型的确否数例查照行系函用以系编通数类形数字名把用明么什的数进 0, , , 度的维指以义则赋元对 , 。 0, , = 内括一据有顺的;, , , , :些有确的和定句语用则 / 如他其等 、括类, 用类据数参 型数么中换转可般 句语 。句语一足不如行判先 而循次执 ,断行 -于别语 和语 么什同点相环种 量串个储节个要”节节少串一,束以别区写用示字用常把上)值重和被域其变于号)修调的于读的以量符 率减格书 . 量常号 点的号使量义定言明法法算进量查时在于个于个定元储应分能译,定定变。出用量,错编,得名中程能名为不先用用定何,