指向结构体成员运算符 : (->) 从外部看是包含了一个解指针(*)所以要对指针进行操作
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist
*L;
L->lenth;
//同样是得到L中length的值
结构体成员运算符 : ( . )直接调用结构体中的某个成员
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist L;
L.length; //直接调用L中length的值
L.data[3];
扩展资料:
结构体成员的点运算符(.)和箭头运算符(->)的区别:
相同点:两个都是二元操作符,其右操作符是成员的名称。
不同点:点操作符左边的操作数是一个“结果为结构”的表达式;箭头操作符左边的操作数是一个指向结构的指针。
如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。
参考资料:
1、指向结构体成员运算符 : (->) 从外部看是包含了一个解指针(*)所以要对指针进行操作。
eg. typedef struct
{
int data[20];
int length;
}Sqlist; //与上面完全一样
Sqlist *L;
L->lenth; //同样是得到L中length的值
2、结构体成员运算符 : ( . )直接调用结构体中的某个成员。
eg. typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist L;
L.length; //直接调用L中length的值
L.data[3];
扩展资料
左结合性和右结合性
C语言中各运算符的结合性分为两种:左结合性和右结合性。
例如:算术运算符的结合性是自左至右,即先左后右。
如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。
而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。
C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。(上文的优先级有分辨左右结合性)。
参考资料
{
int num;
int name;
}
student.num
要用到结构体的数据必须要用这种方式
多用于修改结构成员的值。
以下是具体的例子
struct date{
int year;
int month;
int day;
};
int main(int argc, char* argv[])
{
char end;
struct date today;
struct date* pdate;
pdate=&today;
today.year=2011;
today.month=2;
today.day=1;
printf("year = %d\n\n",today.year);
printf("month = %d\n\n",today.month);
printf("day = %d\n\n",today.day);
printf("year = %d\n\n",pdate->year);
printf("month = %d\n\n",pdate->month);
printf("day = %d\n\n",pdate->day);
}