1. 符号常量和常变量的区别
符号常量:用#define指令,指定用一个符号名称代表一个常量;不占内存,仅仅是临时的符号。
常变量:先定义,后使用;有类型,占存储单元,只是不允许改变其值。
定义符号常量用#define指令,它是预编译指令,,只是用符号常量代表一个字符串,在预编译时仅仅是进行字符替换,在预编译后,符号常量就不存在了,对符号常量的名字是不分配存储单元的。常变量占用存储单元,有变量值,只是值不改变。
2. 循环中break语句和continue语句有什么不同
break语句只能用在循环语句和switch语句中,不能单独使用;跳出所在的循环体,执行循环体后面的语句。
continue语句提前结束本次循环,而接着执行下次循环。
3. 函数声明和函数定义的比较
函数定义:指定函数的名字,函数返回值的类型,函数实现的功能,以及参数的个数与类型,将这些信息通知系统,这样,程序执行函数时,编译系统就会按照定义时所指定的功能执行。
函数声明:将函数名,函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法。
4. 递归和递推
递归:直接或间接调用该函数本身。包括回溯和递推两个阶段。
递推:是一种不断从变量的旧值推出新值的过程。
5. 结构体和共用体
结构体:由不同类型数据组成的组合型的数据结构,名字由一个关键字struct和结构体名组成的;结构体变量所占的内存是其中各成员所占内存之和,每个成员分别占有自己的内存单元。
共用体:几个不同变量共享同一段内存的结构。名字用一个关键字union和共用体名组成;共用体变量所占的内存长度等于最长的成员的长度。
6. strlen 和sizeof的区别
sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等
strlen(...)是函数,功能是求字符串长度。要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
7. static全局变量和普通全局变量, static局部变量和普通局部变量, static函数和普通函数的区别
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储
方式上并无不同。
这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
static局部变量和普通局部变量有什么区别 ?
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
static局部变量只被初始化一次,下一次依据上一次结果
static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static修饰的函数),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头
文件.
static修饰的变量 static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
8. 当指针指向二维数组时,行指针和列指针
行指针只能指向数组的行首元素,列指针可以指向任指向意元素,行指针的下个地址是下一行元素的首地址,列指针的下个地址是相邻元素的首地址。作实参时,行指针要求对应的形参是数组指针,列指针要求对应的形参是指针变量。
9. 形参和实参
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论