Skip to content

C 对象 (Object)(初步)

1. 概念

执行环境中数据 (Data) 存储 的一个区域,其内容可以表示值 (Value)

2. 用声明 (Declaration) 创建对象

声明是一种引入一个或多个标识符 (Identifier) 到程序中,并指定其含义及属性的 C 语言构造。 最简单的声明包括两部分:类型说明符 (Type Specifier)标识符

c
int a;  // "int"是类型说明符,"a"是标识符

相同类型的对象可以在一起声明:类型说明符 标识符 1, 标识符 2, 标识符 3, ... , 标识符 n;
但不推荐这种做法,尤其是类型较复杂时

c
int a, b, c; // 声明三个 int 类型的对象

3. 初始化 (Initialization)

对象声明可以通过名为初始化的步骤提供其初始值

c
int a = 3;
int a = {3}; // 可选地用花括号环绕
int a = {};  // C23 起

4. 标识符和关键字 (Keyword)

4.1 标识符

  1. 标识符是字符序列 (Character Sequence),可以指代一个实体(对象,函数,宏等)
  2. 有些标识符叫保留标识符,不能声明这类标识符,否则是未定义行为 (Undefined Behavior, UB)
    1. 作为关键字的标识符
    2. 以一个下划线开始的具有外部链接的标识符
    3. 所有以一个下划线后随一个大写字母或另一下划线开始的标识符,如 _Mdr __mdr
    4. 标准库所定义的所有外部标识符

4.2 关键字

  1. 类型_Bool(bool) char double float int long short signed unsigned void _Complex_Decimal32 _Decimal64 _Decimal128 _Imaginary _BitInt
  2. 指定符和限定符inline restrict _Alignas(alignas) _Atomic _Generic
  3. 常量true false nullptr
  4. 控制语句相关:break case continue default do else for goto if return switch while
  5. 存储类说明符:auto extern register static constexpr _Thread_local(thread_local)
  6. 运算符sizeof typeof typeof_unqual _Alignof(alignof)
  7. 类型的声明enum struct union
  8. 类型推断:auto
  9. 其他_Static_assert(static_assert) typedef

本章内容对应 cppref 链接如下: