Linux C一站式编程(第七章 结构体)

  • 基本数据类型(Primitive Type)和复合数据类型(Compound Type)
  • 结构体中成员变量的存储空间相邻
  • 结构体之间允许直接赋值

    栈帧:
    C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。
    栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。
    从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等。

  • 组合使得系统可以任意复杂,而抽象使得系统的复杂性是可以控制的,任何改动都只局限在某一层,而不会波及整个系统。

  • 枚举类型:
    enum coordinate_type { RECTANGULAR, POLAR };
    struct complex_struct
    {
    enum coordinate_type t;
    double a, b;
    };

    • 关键字:enum
    • enum coordinate_type是一个枚举类型(类似于结构体)、
    • 枚举类型的变量只能从{ }中取值,值既可以以RECTANGULAR这种形式直接赋值(无需引号),也可以以int形式直接赋值;对于int形式,默认第一个为0,第二个为1,依次类推,不过也可以进行规定,但是递推规则一样,enum coordinate_type { RECTANGULAR = 1, POLAR };
    • 结构体的成员名和变量名不在同一命名空间,但枚举的成员名和变量名却在同一命名空间,所以会出现命名冲突。
int main(void)
{
    enum coordinate_type { RECTANGULAR = 1, POLAR };
    int RECTANGULAR;  //这是不允许的
    printf("%d %d\n", RECTANGULAR, POLAR);
    return 0;
}
  • 结构体的嵌套初始化:struct Segment s = {{ 1.0, 2.0 }, { 4.0, 6.0 }}; 或者 struct Segment s = { 1.0, 2.0, 4.0, 6.0 };

猜你喜欢

转载自blog.csdn.net/lansehuanyingyy/article/details/81408202