黑马程序员技术交流社区

标题: 1104-结构体类型指针 [打印本页]

作者: wangshengjie    时间: 2015-3-13 00:33
标题: 1104-结构体类型指针
/*
        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;
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2