C语言基础:009 C基础语法 - 结构体

  1. 结构体的声明

    1. 结构的基础知识

      1. 结构是一些值的集合,这些值称为 成员变量 。结构的每个成员可以是不同类型的变量。
    2. 结构的声明

      1. 结构体声明语法
        struct tag
        {
        	member - list;
        }variable - list;
      2. code示例:描述一个学生
        typedef struct Stu
        {
        	char name[20]; // 名字
        	int age;       // 年龄
        	char sex[5];   // 性别
        	char id[20];   // 学号
        }Stu;  // 分号不能省略
    3. 结构成员的类型

      1. 结构的成员 可以是 标量 数组 指针 ,甚至是 其他结构体
    4. 结构变量的定义的初始化

      1. 初始化:
        1. 声明类型的同时定义变量
        2. 定义变量的同时赋初值
        3. 结构体嵌套初始化
      2. code示例
        struct Point
        {
        	int x;
        	int y;
        }p1; //声明类型的同时定义变量p1
        
        struct Point p2; //定义结构体变量p2
        //初始化:定义变量的同时赋初值。
        
        struct Stu //类型声明
        {
        	char name[20];//名字
        	int age;      //年龄
        };
        struct Stu s = { "zhangsan", 20 };//初始化
        
        struct Node
        {
        	int data;
        	struct Point p;
        	struct Node* next;
        }n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化
        
        struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化
        
  2. 结构体成员的访问

    1. 结构体变量 访问成员:
      1. 结构变量的成员是通过 点操作符 . )访问的。点操作符接受两个操作数。
    2. 结构体指针 访问指向变量的成员
    3. code示例
      #include <stdio.h>
      
      struct Stu //类型声明
      {
      	char name[15];//名字
      	int age;      //年龄
      };
      struct Stu s = { "zhangsan", 20 };//初始化
      
      void print(struct Stu* ps) {
      	printf("name = %s  age = %d\n", (*ps).name, (*ps).age); // name = lisi  age = 18
      	//2. 使用结构体指针访问指向对象的成员
      	printf("name = %s  age = %d\n", ps->name, ps->age); // name = lisi  age = 18
      }
      int main()
      {
      	struct Stu s = { "zhangsan", 20 };
      	printf("name = %s  age = %d\n", s.name, s.age); // name = zhangsan  age = 20
      	strcpy(s.name, "lisi");//使用.访问name成员
      	s.age = 18;//1. 使用.访问age成员
      	printf("name = %s  age = %d\n", s.name, s.age); // name = lisi  age = 18
      	print(&s);//结构体地址传参
      	return 0;
      }
  3. 结构体传参

    1. print1 print2 函数哪个好些?首选 print2函数。结构体传参的时候,要传结构体的地址。
      1. 原因:
        函数传参的时候, 参数 是需要 压栈 的。
        如果传递一个 结构体对象 的时候, 结构体过大 ,参数压栈的的系统 开销比较大 ,所以会导致 性能的下降
    2. 结构体传参的时候,要传结构体的地址。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值