第二章数据类型问题与解答

来源:互联网 发布:阿里健康数据研究中心 编辑:程序博客网 时间:2024/06/13 02:18

1.什么是变量,它有什么特点?

  其值在其作用域内可以改变的量称为变量,变量在使用前必须要定义,每个变量都有自己的地址,变量的值是变量所对应的内存区域存放的二进制序列,变量的值不会因变量类型发生改变而改变,当变量被转换为对应类型时,内存区域的二进制序列以该类型的形式翻译出来。

 

 

2.局部变量和全局变量的区别。

变量分为全局变量和局部变量:

局部变量:在函数内或者代码块内定义的变量,作用域是从变量定义位置到代码块结束。

全局变量:在函数外定义的变量,作用域是整个源程序。

注意:代码块内部定义的变量屏蔽代码块外部的变量。

 

 

3. 基本内置类型分为哪些?正负数的补码该怎样表示?

   基本内置类型分为 整型、实型、构造类型、指针类型、枚举类型、void类型。其中构造类型是指若干个相关的数据组合在一起形成的一种复杂数据类型。

   在基本数据类型中,最高位如果为1,则代表这个数为正数,最高位如果为0,则代表这个数为负数。正数的补码与其原码一致,负数的补码为符号位不变,其他位为原码取反然后整个数加1

 

 

.4. 声明和定义的区别

定义就是(编辑器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字我们经常所说的变量名或对象名。一个变量或对象在一定的区域内(如函数内、全局等)只能被定义一次。

声明 一是告诉编译器,这个名字已经匹配到相应的一块内存上了,声明可以出现多次。二是告诉编译器,这个变量名或对象名已经被预定,别的地方再也不能用它来作为变量名或对象名。

 

 

5. staticextern使用时要注意些什么?

 static

修饰局部变量时,该变量存放在静态数据区,其生命周期一直持续到整个程序执行结束为止。

修饰全局变量时,对全局变量进行修饰并且修改它的作用域的范围。

修饰函数时,也是改变其作用域。

extern

 外部变量是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的结尾,如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终。在写程序时,如果使用extern函数,一定要注意外部函数的参数类型,参数个数和返回值类型,最好保持一致。

 

 

6. autoregister使用时要注意些什么?

auto

     auto的出现意味着当前变量的作用域为当前函数或代码段的局部变量,意味着当前变量会在内存栈上进行分配。

register:一个变量被其修饰,往往意味着该变量会作为一个寄存器变量,寄存器变量是指一个变量直接引用寄存器,也就是对变量名的操作的结果是直接对寄存器进行访问。

 

 

7.typedef的使用方法。

typedefC语言的关键字,其作用是为一种数据类型定义一个新名字。在编程中使用typedef目的一般有两个:一个是给变量起个易记且意义明确的的新名字,另一个是简化一些比较复杂的类型声明。

 

 

8. 枚举的使用方法:

          enum  enum_type_name

                  {

                          ENUM_CONST_1,

                          ENUM_CONST_2,

                          ......

                          ENUM_CONST_n

                   }enum_variable_name;

 

enum_type_name:自定义的一种数据类型名

enum_variable_name:枚举变量。

实际上enum_type_name类型是对一个变量取值范围的限定,而花括号内是它的取值范围。

 

 

9. 枚举与#define宏的区别:

  1.#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。

  2.一般在编译器里,可以调试枚举常量,但不能调试宏常量。

  3.枚举可以一次定义大量相关的常量,而#define宏一次只能定义一个。

 

10. 联合体的定义,以及联合与结构有什么区别?

 定义一个联合类型的一般形式为:

union 联合名

{

     成员表

}

成员的一般形式为:

类型说明符  成员名

 

联合与结构的区别:在结构中,各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和;而在联合中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。

原创粉丝点击