linux C数据结构类型


1.C语言里面如何计算数据类型取值范围及其大小

类型说明符

数的范围

字节数

int

-231~(231-1)

4

unsigned int

0655350~(216-1)

4

short int

-3276832767 -215~(215-1)

2

unsigned short int

0655350~(216-1)

2

long int

-2147483648~2147483648231~(231-1)

4

unsigned long int

0~42949672950~(232-1)

4

char

-128~12727~(27-1)

1

unsigned char

0~2550~(28-1)

1

 

2. auto,register,extern,static使用有什么区别

auto变量:是函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给他们分配存储空间,在函数调用结束时就自动释放这些存储空间

register变量:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,只有局部自动变量和形式参数可以作为寄存器变量

extern变量:外部变量是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的结尾,如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终

static变量:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放

 

3. 数据类型间可以进行强制转换原因

变量的值是变量所对应的内存区域内存放的二进制序列,变量的值不会因为变量的类型发生改变而改变,当变量转换为对应的类型时,内存区域内的二进制序列以该类型的形式翻译出来。由此可见,变量在内存中存放和它的值没有关系,而是和他的类型相关的。

 

4. 声明和定义的区别

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

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

 

5.使用extern时应该注意什么

1)多个源文件 共享变量和函数时,,由于多个C源文件的编译是独立的,所以编译器无法判断多个源文件共享的变量的类型是否一致,等到链接的时候,多个源文件编译后的.o文件连接成一个目标文件,如果有一个以上源文件对同一个变量进行了初始化,则报错,至少GCC是这样。

2)在写程序时,如果使用extern函数,一定要注意外部函数的参数类型,参数个数和返回值类型,最好保持一致,要不然会出现意想不到的问题

 

6. 宏定义与const常量定义之间有什么区别

define是宏定义,程序在预处理阶段将用define定义的内容进行了替换,因此程序运行时,常量表中没有用define定义的常量,系统不为它分配内存;const定义的常量,在程序运行时在常量表中,系统为它分配内存。

define定义的常量,预处理时直接进行了替换,所以编译时不能进行数据类型检验;const定义的常量,在编译时进行严格的类型检验,可以避免出错。

define 定义表达式时要注意边缘效应

 

7. 枚举的使用方法

例如:          enum  enum_type_name

                  {

                          ENUM_CONST_1,

                          ENUM_CONST_2,

                          ......

                          ENUM_CONST_n

                   }enum_variable_name;

注意:enum_type_name是自定义的一种数据类型名,而enum_variable_nameenum_type_name类型的一个变量,也就是我们常说的枚举变量。实际上enum_type_name类型是对一个变量取值范围的限定,而花括号内是它的取值范围。

 

8.typedef的使用方法

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

 

9.联合和结构的区别

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

 

10.局部变量和外部变量同名时的使用方式

如果同一个源文件中,局部变量和外部变量同名,则在局部变量的作用范围内,外部变量被屏蔽,即它不起作用。

 

猜你喜欢

转载自blog.csdn.net/qy961212/article/details/78175451