[c语言]结构体初阶

本文介绍了C语言中结构体的使用,包括定义、初始化和访问方法,以及在函数调用时如何选择传值或传址以提高性能,特别强调了传址方式在结构体较大时对性能的影响和推荐使用的原因。
摘要由CSDN通过智能技术生成

结构体初阶

  • 结构体定义

  • 结构体初始化

  • 结构体访问

    //结构体定义、初始化、访问
    struct B
    {
    	int x;
    	char y;
    };
    struct str {
    	struct B sb;
    	char name[5];
    	int age;
    	char id[10];
    };
    
    int main() {
    	struct str s = { {10,'b'},"姿态",18,"202401"};
    	printf("%d %c %s %d %s\n",s.sb .x,s.sb.y,s.name,s.age,s.id);
    	return 0;
    }
    
  • 结构体传参

    //结构体作为参数 传参
    struct B
    {
    	int x;
    	char y;
    };
    struct str {
    	struct B sb;
    	char name[5];
    	int age;
    	char id[10];
    };
    
    void my_printf_1(struct str t) {//传值
    	printf("%d %c %s %d %s\n", t.sb.x, t.sb.y, t.name, t.age, t.id);
    }
    void my_printf_2(struct str* p) {//传址;更推荐:更环保,且更能防止栈溢出
    	printf("%d %c %s %d %s\n", p->sb.x, p->sb.y, p->name, p->age, p->id);
    }
    int main() {
    	struct str s = { {10,'b'},"姿态",18,"202401" };
    	
    	my_printf_1(s);
    	struct str* p = &s;
    	my_printf_2(p);
    	return 0;
    }
    

    上面的my_print_1和my_print_2函教
    答案是:首选my_print_2函数。原因:
    函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
    结论:结构体传参的时候,要传结构体的地址。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值