但是,结构变量与数组在概念上有重要区别 数组名是数组元素存储区域的起始地址 是地址量,而结构变量名只代表一组成员,它不 是地址量; (2)数组中的元素都有相同的数据类型,而结 构变量中的成员的数据类型却可以不相同。 结构变量成员的表示形式或访问形式一般是: 结构变量名成员名
26 但是,结构变量与数组在概念上有重要区别: (1) 数组名是数组元素存储区域的起始地址, 是地址量,而结构变量名只代表一组成员,它不 是地址量; (2) 数组中的元素都有相同的数据类型,而结 构变量中的成员的数据类型却可以不相同。 结构变量成员的表示形式或访问形式一般是: 结构变量名‧成员名
其中的“号称为“结构成员运算符”,它有最 高优先级,左结合性。它用来连接结构变量名与成 员名,具有“从属于”的含义,表示其后的成员名 是前面结构变量中的一个成员。 如前面示例2中的结构变量 paybill,它的三个成员 分别表示为: paybill eletronic paybill gas paybill. water 27
27 其中的“ ‧ ” 号称为“结构成员运算符”,它有最 高优先级,左结合性。 它用来连接结构变量名与成 员名,具有“从属于”的含义, 表示其后的成员名 是前面结构变量中的一个成员。 如前面示例2中的结构变量paybill,它的三个成员 分别表示为: paybill‧eletronic paybill‧gas paybill‧water
结构变量名成员名”,这样的结构变量成员 的表示或访问形式有如下特点: 它是一个运算表达式,且是一个左值表达式。 ■它具有与普通变量完全相同的性质,可以像普通 变量那样参于各种运算、既可以出现在赋值号的 左边向它赋值、也可以出现在赋值号的右边作为 个运算分量参于表达式的计算、也可以作读入数据 存放的对象、当然可作为++、--等要求左值对象的 运算符的操作数。 28
28 它是一个运算表达式,且是一个左值表达式。 它具有与普通变量完全相同的性质,可以像普通 变量那样参于各种运算、 既可以出现在赋值号的 左边向它赋值、也可以出现在赋值号的右边作为一 个运算分量参于表达式的计算、也可以作读入数据 存放的对象、当然可作为++、--等要求左值对象的 运算符的操作数。 “结构变量名.成员名”,这样的结构变量成员 的表示或访问形式有如下特点:
下面是一些表示、访问结构变量成员的的例子: person2- salary -=350.20 paybill gas++; scanf(“%s”, hiredate month); scanf(%d”,& paybill] water);/可取成员的地址*/ printf(“%on”, person2tel);
29 下面是一些表示、访问结构变量成员的的例子: person2‧salary -= 350.20 ; paybill‧gas++ ; scanf ( “ %s ” , hiredate‧month ) ; scanf ( “%d” , &paybill‧water ) ; /*可取成员的地址*/ printf ( “ %o\n ” , person2‧tel ) ;
struct employee i char name 201; double salary long tel char sex struct date birthdate } person1={"Wang",2096.86,83594107,'F",14,"sep",1950}, person2={"Chen",3200.31,83594298,M',23,"ju",1937} person3={"zhen",1663.45,83592623,'F",18,"may",1963}
30 struct employee { char name[20] ; double salary ; long tel ; char sex ; struct date birthdate ; }person1={ "Wang", 2096.86 , 83594107 , 'F', 14 , "sep", 1950 }, person2={ "Chen", 3200.31, 83594298 , 'M' , 23 , "jul" , 1937 } , person3={ "Zhen", 1663.45 , 83592623 , 'F', 18 , "may", 1963 };