前面我们知道了 C语言中数据类型分类:基本类型(整、浮),指针、聚合类、空类型。
在C语言中如何声明?初始化? 访问? 访问范围?硬件中如何存储?这是几个需要关注的问题。
基本声明
说明符 + 表达式列表
说明符: 是为了具体的说明数据类型、长度、正负的信息。主要包括了部分关键词: int float char unsigned signed long short …
表达式列表: 就是要声明的名字代号,允许赋予初始值。如 int i=0;
除了常见的数据类型声明之外,还有几个特别一些的。
数组声明: int tx_buf[20],定义了数组tx_buf,包含了20个int元素。
指针声明: int *a 表明a是一个指针,指向一个int型数据。 a的值等于 被指向目标的物理地址。
常量声明: C语言允许定义常量,需要使用关键字 const
Int const a =10; 定义a为常数10,后续程序中该变量不能修改,若有编译器会报错警示。
Int const *p 定义指针p指向常量。即被指向的对象 是只读的。 但p可以变化,指向其他对象。
Int * const p 定义指针p是常量,即p的值是固定的,只能指向某一个固定的物理地址。但该物理地址所存储的内容是可变的。
Int const * const p 定义了常量指针p指向 一个只读对象。即p永远指向 这个read-only 的int值。
Typedef 和 define 和const 关于这三者具体的应用区别,后面还会再做介绍
Define: 是一个预编译指令,在翻译指令时,碰到 define值,就自动完成替代。用于宏变量的控制,十分利于代码维护。
Typedef : 专门用于 为数据类型定义新名字。 如typedef unsigned char uint8; typedef char * Pchar
typedef不是简单的 define替代。先记住这句话
const: const的引入是一个修饰词。很大程度上为了告诉程序员,不要轻易改动这个变量。
作用域
当变量声明后,它在一定的区域内才能被访问,具体这个区域有多大,就由作用域决定。
因此我们可以说: (1) 超出作用域无法访问该变量;(2) 超出作用域可以定义新的变量,即使同名变量。