/*
1、结构体变量的指针:结构体变量所占内存段的起始地址。
2、访问结构体成员变量的方式:
(1)结构体变量.成员名 stu_1.num
(2)(*p).成员名 (*p).num
(3)p->成员名 p->num
3、说明
(1)(*p).num中括号不能省略,因为"."运算符优先于"*"运算符。*p.num 《=》*(p.num)
(2)"->"为指向运算符,优先级高于"++"运算符。
p->n 得到p指向的结构体变量中的成员n的值
p->n++ 得到p指向的结构体变量中的成员n的值,用完后该值后使它加1 p->n++ 《=》(p->n)++
++p->n 得到p指向的结构体变量中的成员n的值先加1,然后再使用它
*/
#include<stdio.h>
#include<string.h>
struct student //struct student是结构体类型名
{
long num;
char name[20];
char sex;
float score;
};
int main(int argc, const char *argv[])
{
struct student stu_1;
struct student *p;//结构体变量指针
p = &stu_1;//*p指向stu_1的起始地址
stu_1.num = 89101;
strcpy(stu_1.name,"WangShengJie");
stu_1.sex = 'M';
stu_1.score = 89.5;
printf("NO.:%ld\nname:%s\nsex:%c\nscore:%f\n", stu_1.num, stu_1.name, stu_1.sex, stu_1.score);
printf("NO.:%ld\nname:%s\nsex:%c\nscore:%f\n", (*p).num, (*p).name, (*p).sex, (*p).score);
float a = p->score++;//先将p指向的结构体中的成员变量score的值赋值给a,然后再加1
long b = ++p->num;//先将p指向的结构体中的成员变量num的值加1,然后再赋值给b
printf("score=%f a=%f\n",p->score,a);//score=90.500000 a=89.500000
printf("num=%ld b=%ld\n", p->num, b);//num=89102 b=89102
return 0;
}
|
|