C语言.结构体、联合体(共同体)、枚举类型、typedef、define 、头文件、预处理、 条件编译

一. 结构体

  1. 结构体的概念 -> 新类型
    定义一个整型变量: int A;
    定义多个整型变量: int A[100]; --> 数组解决同时定义多个相同类型的变量

    同时定义多个不同类型变量时? 如何解决? --> 结构体 --> 内部存储不同类型的基本数据类型

结构体: 同时有char short int long float double int* char* int()[3] int ()(int,int),数组,结构体,联合体 --> 不能有函数

—> 结构体: 就是由多个不同变量组成的复杂的新的数据类型。

  1. 结构体这种新类型是如何定义的呢?

模型:
struct 结构体名字{
/* 结构体的组成变量 */
}; --> 后面有一个分号,不然就会报错!
编译出错: error: expected ‘;’, identifier or ‘(’ before ‘int’

例子:
struct mydata{ struct mydata --> 新的数据类型 好像我们的int一样。
char name[20];
int age;
};

  1. 结构体变量如何定义?

    struct mydata --> 新的数据类型

    定义变量公式: 数据类型 变量名;
    定义整型变量 int a;

    定义结构体变量: struct mydata b;

  2. 结构体指针如何定义?

    定义结构体变量: struct mydata b;

    1)先写一个 *
    2)在*后面写一个指针变量名p p
    3)确定指向数据是什么 struct mydata b;
    4)把指向的数据的变量名去掉 struct mydata
    5)把剩余的部分加在
    p前面 struct mydata *p;

    结果: 结构体指针: struct mydata *p;
    数据类型: struct mydata *
    变量名: p

  3. 结构体变量与指针是如何访问成员?

1)设计结构体的成员

struct mydata{
char name[20];
int age;
};

2)结构体的变量是使用 “.” 访问结构体的成员

struct mydata gec;
strcpy(gec.name,“helloworld”);
gec.age = 100;

printf(“gec.name = %s\n”,gec.name); //helloworld
printf(“gec.age = %d\n”,gec.age);//100

3)结构体的指针是使用 “->” 访问结构体的成员

strcpy(p->name,“apple”);
p->age = 20;

printf(“p->name = %s\n”,p->name);//hello
printf(“p->age = %d\n”,p->age);//20

  1. 结构体变量赋值方式

    1. 先定义一个变量,再使用"."访问成员进行赋值

struct mydata gec;
strcpy(gec.name,“helloworld”);
gec.age = 100;

2.  在定义的同时进行初始化	

struct mydata aaa = {“helloworld”,10}; --> 等价于 “helloworld” 拷贝对应成员name的空间 10 -> age的空间中
–> 注意对应的位置与类型必须与结构体定义时变量类型一致
struct mydata bbb = {“hello”}; --> 后面没有赋值的变量都为0 指针都为NULL

3.  使用另外一个结构体变量给某个结构体变量整体赋值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值