整型字面值在缺省的情况下总是默认为int家族中最短但足以容纳整个值的类型。
枚举类型后面的值总是比前面的大1。
浮点数字面值在缺省的情况下都是double类型的。
指针变量就是一个其值为另外一个(一些)内存地址的变量。
字符串常量的直接值是一个指针。
Int *a;//*应靠近a。
常量:
1、const
const int a=5;
int const b=5;//两种方式都可以声明常量,选择一个你所喜欢习惯的。我喜欢在变量类型和修饰的表达式之间加const
int const *pci;//这是一个指向整型常量的指针,指针的值可以修改,但是它所指向的整型常量的值不能修改。
int * const cpi;//这是一个指向整型的常量指针,它指向的值可以修改,但是它的值不能被修改。
2、#define
#define MAX 50
作用域:
标识符的作用域就是该标识符可以被使用的区域,与它声明的位置有关。
代码块:位于一对花括号之间的所有语句称为代码块。
链接属性:决定如何处理在不同文件中出现的相同标识符。
static(在函数定义时或代码块外部):只对缺省链接属性为external的声明才有改变链接属性为internal的效果。
extern:第一次声明时,指定该标识符为external链接属性,第二次或以后使用时并不会改变该标识符原来的属性。
变量的存储类型是指存储变量的值的内存类型,决定它的值何时创建,何时销毁,能保持多久。
变量的缺省的存储类型由它声明的位置决定。
静态变量:凡是在任何代码块之外声明的变量总是存储于静态内存中。这类变量在程序运行之前创建,在程序的整个执行期间一直存在,始终保持原先的值,除非你给它赋一个不同的值或者程序结束。如果不显示的初始化,将会被初始化为0。
自动变量;在代码块内部声明的变量,存储于堆栈中。在程序执行到声明变量的代码时就被创建,当程序的执行流离开该代码块时,该变量就自动被销毁。如果不显示的初始化,将会被初始化为垃圾值。
static(在代码块内部)修饰自动变量时,使其变成静态存储类型。在程序执行期间一直存在。函数的形式参数不能声明为静态变量,因为实参总是在堆栈中传递给参数。
寄存器变量:register修饰自动变量,使其存储于机器的硬件寄存器中。存储在寄存器中的变量比存储在内存中的变量访问起来效率更高。
寄存器变量的创建和销毁时间与自动变量相同。当函数开始执行时,它把所有需要使用的寄存器的内容都保存到堆栈中,等函数返回时,再将这些值复制回到寄存器中。因此,机器并不向你提供寄存器变量的地址。