linux学习-条件编译和结构体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mikkles/article/details/78290835

条件编译

- 编译器根据条件的真假决定是否编译相关的代码

常见的条件编译有两种方法:

  • 根据宏是否定义:
  • -

#ifdef<macro>

……

#else

……

#endif

    • 根据宏的值:
#if<macro>
……
#else
……
#endif

结构体

  • 结构体是用户自定义的新数据类型,在结构体中可以包含若干个不通数据类型和不同意义的数据项(也可以相同),从而使这些数据项组合起来反映某一个信息。

  • 定义

struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
};
  • 大括号中的内容也称为“成员列表”或“域表”
  • 其中,每个成员名的命名规则与变量名相同
  • 数据类型可以是基本变量类型和数组类型,或者是一个结构体类型
  • 用分号“;”作为结束符。整个几个狗的定义也用分号作为结束符

结构体类型中的成员名可以与程序中的变量名相同,二者并不代表同一个对象,编译程序可以自动对他们进行区分。

  • 结构体类型是用户自行构造的
  • 它由若干不同的基本数据类型的数据构成
  • 它属于C语言的一中数据类型,与整型、实型相当。因此,定义它时不分配空间,只有用它定义变量是才分配空间

  • 不能将一个结构体类型变量作为一个整体加以使用,而只能对结构体类型变量中的各个成员分别引用。

  • 如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级的找到最低级成员。只能对最低级的成员进行赋值或存取以及运算。
  • 队成员变量可以像普通变量一样进行各种运算
  • 在数组中,数组是不能彼此赋值的,而结构体类型变量可以相互赋值。在c程序中,同一结构体类型的结构体变量之间允许相互赋值,而不同结构体类型的结构体变量之间不允许相互赋值,即使两者包含同样的成员

    结构体变量

  • 直接定义变量

struct student{

}xiaoming,xiaomei;
  • 独立定义变量
struct student{

};
struct student xiaoming,xiaohua;
  • 无结构体名定义变量

通常用于内嵌结构体

struct {

}xiaoming,xiaomei;
  • 通过宏方便引用变量
#define STUDENT struct student
STUDENT{


};
STUDENT xiaoming,xiaomei;

猜你喜欢

转载自blog.csdn.net/mikkles/article/details/78290835