第三章——数据

一、基本数据类型

1.四种基本类型:整型、浮点型、指针和聚合类型(如数组和结构、枚举等)

2.长整数至少和整型一样长,而整型至少应该和短整型一样长;

3.缺省的char要么是unsigned,要么是signed char,表准规定这取决于编译器,像int等一般默认为是signed,但arm-linux-gcc编译器将char定为signed char。

4.对于char类型的可移植性问题,只有把char型字符变量的值限制在signed和unsigned的交集之内,才具有最大程度的可移植性,但如果要进行算数运算,就需要把char显式的声明为signed或者unsigned;许多处理字符的库函数将他们的参数声明为char,字符数组类型,显式声明可能会带来兼容性问题。

5.九种整型:char    unsigned char     signed char     int    unsigned int    short     unsigned short    long     unsigned long

6.整型常量的类型取决于它的书写形式,但是你可以在某些常量的后面添加一个后缀来改写缺省的规则,L或l可以使这个整型常量解释为long整型值。书写时采用最容易表达的形式,如地址采用十六进制

7.标准也允许多字节常量和宽字符常量,用来表示像unicode等的字符集

8.枚举类型的值为符号类型,而不是整型常量,类似于#define定义的符号常量

9.浮点类型:float    double    long double,没有unsigned或signed之分,用来表示小数和大于整数范围的实数,在内存中的表示形式颇为复杂:符号位,阶码,有效数字

10.C语言没有字符串常量,对于字符串的操作应该充分利用字符串库函数,库函数经常使用字符数组而不是字符指针

 

二、基本声明

1.注意数组下标的检查,越界

2.数组可以在定义的同时初始化,或者在定义后逐个进行初始化,但不可整体初始化,字符串可以利用库函数进行初始化

3.使用typedef机型类型的创建,而不是#define,

4.const将一个变量声明为常量,不可进行修改,两种初始化方法:在声明的时候进行初始化,声明为形参的函数在调用时会得到实参的值

 

三、作用域,链接属性,存储类型,

1.四种作用域:文件作用域、原型作用域、函数作用域、代码块作用域

2.链接属性有3种:外部(external),内部(internal),和无链接属性(none)。没有链接属性的标识符总是被当作单独的个体,也就是说该标识符的多个声明被当作独立的不同的个体。属于internal链接属性的标识符在统一个源文件中的所有声明都指同一个实体,但位于不同源文件的多个声明则分属于不同的实体,属于external的标识符不论被声明多少次、位于几个源文件都被表示为同一个实体

 3.static只对缺省为external的声明才有改变的效果,已经声明的标识符第二次出现时,并不会改变第一次声明的链接属性

4.static:修饰代码块内的变量时,使它的存储类型从自动变为静态;函数和外部变量被声明为static时,作用域为本文件,链接属性为internal

函数的形参不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归

5.对于频繁执行间接访问的指针,如果声明为寄存器变量,效率会大大提高

6.只要变量并非声明在代码块或函数定义内部,在缺省情况下的链接属性即为external,如果一个变量声明为代码块内部,在它前面添加extern关键字将使它引用的全局变量而不是局部变量

7.与外部变量同名的局部变量将使全局变量在局部变量的作用域失效;对于函数来说,存储类型不是问题,因为它总是存储在静态内存中;代码块内或函数定义中引用的外部变量的作用域同局部变量

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值