查看当前机器的各数据类型的取值范围,可查看文件“limits.h”
2.2.4、枚举类型
enum 枚举名{ 枚举值表};
在32位机中地址长度都是32位,因此,无论哪种类型的指针都占4个字节。
2、指针常量
指针常量只有唯一的一个NULL(空地址)。
全局变量
(1)全局变量的定义和全局变量的声明并不是一回事,全局变量定义必须在所有的函数之外,且只能定义一次,其一般形式为:
[extern] 类型说明符 变量名, 变量名...
extern可以省略。
全局变量的声明出现在要使用该变量的各个函数内。在整个程序中,可能出现多次。
extern 类型说明符 变量名, 变量名...
全局变量在定义时就已经分配了内存单元,并且可做初始赋值。全局变量声明时不能再赋初始值,只是表明在函数内要使用某外部变量。
(3)全局变量的内存分配是在编译过程中完成的。
3、变量的存储方式
静态存储 和 动态存储
生存期 和 作用域
存储类型:
- auto 自动变量(动态)
- static 静态变量(静)
- register 寄存器变量(动态)
- extern 外部变量(静)
1、函数内凡未加存储类型说明的变量均视为自动变量,也就是说自动变量可省去说明符auto。
静态局部变量 和 静态全局变量
const int *a;int * const a;
第一条,修饰指针a所指向的地址,无法通过指针a来修改其指向的对象的值。但是a这个指针本身的值(地址)可以改变,即指向其他对象。
第二条,修饰的是指针a。(地址)不可改变。
2.4.7、sizeof操作符
单目运算符;运算对象是变量或数据类型;结果为一个整数。
变量占用内存空间的字节数。
结构体
struct 结构体名{ 类型 成员名; 类型 成员名; ...} 结构体变量名;
结构体名是结构体的标识符,不是变量名。
struct person{ char name[8]; int age;} p1;
struct person{ char name[8]; int age;};struct person p1;
void *malloc(size_t size);free释放
2.8、_attribute_机制介绍
_attribute_语法格式:
_attribute_ ((attribute-list))