C 结构体

在C语言中,当我们需要把一些数据放在一起的时候,我们常会用到结构体这么个东西,用struct把数据包装在一个内存空间内。结构体内我们可以存放各种类型的数据和变量,除了常见的int、char、数组,以及指针等等,甚至还可以是其他的结构体。

结构体由结构成员、结构类型和结构变量组成 。其中结构成员是最小的单位,即结构体内设定的多个变量。一个单个的结构体是一个结构类型,由多个结构变量组成。结构变量是在结构体定以后,通过声明进行实例化的结构类型。与结构类型不同的是结构变量有对应的变量名。

关于结构体的赋值:

  1. 最常见的是用大括号{}直接给明值。按定义结构体时设置的变量顺序。

  2.  {. 属性 = ...}  这种方式可以选择式的进行赋值。对未进行赋值的结构成员,给默认值0。

引用结构体时,务必使用:  结构变量 . 结构成员 的格式。切记中间的属性符" . "

对于结构体,还有一种指针的用法,叫做结构指针。struct xxx . *p = & xxx     当使用结构指针时,我们也有不同的方法引用结构体中的数值:第一种:(*p).xxx;第二种:p->xxx

由于这种用法,使得我们在使用函数时,也可以使用一种新的返回类型struct。当定义这种类型的子函数时,返回值为一个结构体指针。这种做法在写数据结构时很常见。

既然能够作为返回值,当然也可以作为函数中的参数进行传递。不过需要说明的是:当作为函数参数进行传递时,它的运行本质是在子函数内新建一个结构体,然后将传递的结构体内所有数值传递到这个新建的结构体内。所以所做的修改并不会影响原结构体。

也有一种数组,叫结构数组,数组的每个单元存放的是一个结构体。

最后说明:

  1. 结构成员所在的地址不一定是连续的。结构类型占用的内存空间大小不一定等于结构成员所占用的内存空间大小(只大不小,且为最长结构成员所占内存空间大小的整数倍)
  2. 属性符" . "运算优先级高于指针" * ",所以运算时注意括号的使用
  3. " . " 和 " -> " 的区分。 " -> "左侧一定是指针
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章