c语言结构体是类似于名片形式的数据集合体,可以把它理解为一种由用户自定义的特殊的复合型的“数据类型”,在这个复合型的“数据类型”中可以包含多种基本数据类型,我们可以把它作为一个整体来操作。
c语言使用:结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用 for 循 环一个一个地使用结构体数组中的元素。
结构体的意义
结构体描述了一段内存的解释意义。
在内存中,数据的意义在于如何使用此段数据,如在内存中存有一个数据3,如果只把他当作正整数来使用,那么其意义为正整数3,如果把内存中的3,当作2的3次方来使用,那么3的意义则为指数3。而一个结构体则描述了一段内存中的数据的使用意义。
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member).
char[] 和 char * 都可以声明一个字符, 但是是有区别的, char[] 可以直接操作字符串中的每个字符, 而char * 则不可以.
char[]是数组, 不是指针, 指针赋值可以使用点的方式或者->.
数组赋值字符串只能使用strcpy()的方式, char * 则可以直接使用(.)操作符和赋值
说明: title是数组, 不是指针, 指针赋值可以使用点的方式或者->, 数组赋值字符串只能使用strcpy()的方式
这种写法是在定义时声明了变量为subject, 使用时不需要struct Subject subject 这种写法
而是直接使用subject就可以了
使用
其他一些定义结构体的方式
3.如果需要变量是固定的,后面不需要再使用结构体名定义其他变量,那么在定义时也可以不给出结构体名,如下所示:
结构体设置别名
在使用时 Person <==>struct person , 二者是等价的
结构体数组在定义的同时也可以初始化,例如:
操作
而不能写作:
通过结构体指针可以获取结构体成员,一般形式为:
或者:
第一种写法中,.的优先级高于,(pointer)两边的括号不能少。如果去掉括号写作pointer.memberName,那么就等效于(pointer.numberName),这样意义就完全不对了。
第二种写法中,->是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针直接取得结构体成员;这也是->在C语言中的唯一用途。