A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangshengjie 中级黑马   /  2015-3-13 00:33  /  684 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
        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;
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马