结构体-结构体指针-typedef

结构体

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct student {//结构体的所占空间大小是4的整数,因为存在对齐,对齐的目的是为了提高cpu访问内存效率
    int num;//num sex等成为成员
    char name[20];
    char sex;
    int age;
};//结构体类型声明
int main()
{
    struct student s = { 100,"lele",'m',20 };
    struct student sarr[3];
    int i;
    printf("%d %s %c %d\n", s.num,s.name,s.sex,s.age);//访问成员并将其输出
    for (i = 0; i < 3; i++)
    {
        scanf("%d%s %c%d", &sarr[i].num, sarr[i].name, &sarr[i].sex, &sarr[i].age);
    }
    for (i = 0; i < 3; i++)
    {
        printf("%d %s %c %d\n", sarr[i].num, sarr[i].name, sarr[i].sex, sarr[i].age);
    }
    return 0;
}

结构体指针

#include <stdio.h>
#include <stdlib.h>
struct student {
    int num;
    char name[20];
    char sex;
};
int main()
{
    struct student s = { 1001,"wangle",'M' };
    struct student* p;
    p = &s;
    printf("%d %s %c\n", (*p).num, (*p).name, (*p).sex);//因为.的优先级高于*p 所以必须打括号
    printf("%d %s %c\n", p->num, p->name, p->sex);//两种写法输出的一样
    //结构体初始化
    struct student sarr[3] = { 1001,"lilei",'M',1005,"zhangdan",'M',1006,"lishi",'M'};
    int num;
    p = sarr;
    printf("-----------------------------------------------\n");
    num = p->num++;
    printf("num=%d,p->num=%d\n", num, p->num);//num=p->num; (因为->的优先级高于++,所以后面的部分应该是整体++ 即  p->num++
    //其输出为1001,1002
    num = p++->num;//num=p->num;p++;//p++相当于指向了下一个数组
    printf("num=%d,p->num=%d\n", num, p->num);
    //其输出为1002 1005
    return 0;
}

typedef

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//typrdef的作用是起别名


//给结构体类型起别名,为stu..起了结构体指针类型的别名,为pstu
typedef struct student {
    int num;//num sex等成为成员
    char name[20];
    char sex;
}stu, * pstu;
typedef int INTEGER;

int main()
{
    stu s = { 1001,"wangle",'M' };
    pstu p;//stu* p1;那么p1也是一个结构体指针
    INTEGER i = 10;
    p = &s;
    printf("i=%d,p->num=%d\n", i, p->num);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值