c复习过程随笔九

Posted lsy666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c复习过程随笔九相关的知识,希望对你有一定的参考价值。

定义和使用结构体变量

  声明:struct 结构体名{成员表列}   

结构体变量:1.可以先声明结构体类型,再定义该类型的变量 2.也可以在声明类型的同时定义变量  :struct 结构体名{   成员表列}变量名表列(不便于维护,一般不用); 3.不指定类型名而直接定义结构体类型变量

结构体变量初始化:在定义结构体变量时可以对它的成员初始化,可以对某一成员初始化如:struct Student b={.name="li"} 结构体变量b的成员name赋初值 其他则为0和‘\0’,NULL

可以引用结构体变量中成员的值,引用方式为 结构体变量名.成员名

如果成员本身有属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。

对结构体变量的成员可以像普通变量一样进行各种运算。同类的结构体变量可以互相赋值。(不能整体读入结构体变量的所有值)

结构体数组:

  定义:(1)struct 结构体名  {成员表列}数组名[数组长度](2)结构体类型 数组名[数组长度]  

  在定义后面加上={初值表列}可以对数组初始化

结构体指针:

  指向结构体对象的指针变量,可以指向结构体变量也可以指向结构体数组中的元素  struct student *pt

   结构体指针使用成员,如果p指向stu, p->成员名,或(p*).成员名,stu.成员名

      也可以指向结构体数组:如struct student  

              struct student stu[3]

              struct student*p 

              (p=stu;p<stu+3;p++)p->成员名

  此时p不能指向结构体中某个具体成员因为指针所占用的字节数不同,除非进行强制转换

将一个结构体变量的值传递给另一个函数:(1)用结构体变量的成员做参数(和普通变量一样)(2)结构体变量作实参(较少使用,值不能返回主调函数)(3)用指向结构体变量的指针作实参,传递地址

 共用体类型:

    在同一段内存单元存放不同类型的变量

    定义:union 共用体名

    {成员表列}变量表列;

共用体变量不能直接引用,只能引用共用体变量中的成员

(共用体类型数据每一瞬时只能存放一个成员,而不能同时存放多个所以共用体变量初始化的时候只能有一个变量,共用体变量中起作用的成员是最后一次被赋值的成员)

枚举类型:

  如果一个变量只有几种可能的值,则可以定义为枚举类型,声明:enum [枚举名]{枚举元素列表}

c中对枚举类型的枚举元素按常量处理,故称为枚举常量,不能对他们赋值,但可以指定数值(定义时)

每一个枚举元素都代表一个整数,枚举元素可以用来比较。

typedef声明新类型名: 用新类型名代替原有的类型名如typedef int Integer

           命名一个简单的类型名代替复杂的类型表示方法如

(1)命名一个新的类型名代表结构体类型:

typedef struct {

 int month;

 int day;

 int year;

}Date;

Date birthday;定义结构体类型变量birthday

(2)命名一个新的类型名代表数组类型

typedef int Num[100]

Num a;定义a为整型数组名,它有100个元素

(3)命名一个新的类型名代表指针类型

typedef char*String

String p,s[10] p为指向字符的指针变量,s为字符指针数组

(4)命名一个新的类型代表指向函数的指针类型

typedef int(*pointer)() //指向函数的指针类型,返回整数值

pointer p1,p2

typedef 与 #define :  #define是在预编译阶段处理,只是简单的字符串替换

typedef是编译阶段处理的,并不是简单地字符替换

 

以上是关于c复习过程随笔九的主要内容,如果未能解决你的问题,请参考以下文章

c复习过程随笔三

c复习过程随笔十

c复习过程随笔七

c复习过程随笔八

MYSQL随笔九 binlog日志清理

寒假作业随笔