zoukankan      html  css  js  c++  java
  • 04、结构体两种传参形式

    结构体两种传参形式

    题目:有一个结构体变量stu,内含学生学号、姓名、和3门课程的成绩。要求在函数add10中将小于60分的成绩增加10分,然后输出全部信息。

    、结构体变量作为实参

    /*
    	2017年6月30日13:53:15
    	功能:结构体变量作为实参
    */
    #include <stdio.h>
    
    struct stu
    {
    	int num;
    	char name[10];
    	float score[3];
    }; 
    void add10(struct stu st2)
    {
    	int i;
    	for(i=0; i<3; i++)
    	{
    		if(st2.score[i]<60)
    			st2.score[i] += 10;
    	}
    	printf("NO.%d
    Name:%s
    Score:%.2f, %.2f, %.2f
    ", st2.num, st2.name, st2.score[0],st2.score[1],st2.score[2]);
    }
    void main(void)
    {
    	struct stu st1 = {13, "Mili", 99.50, 59.69, 58.80};
    	add10(st1);
    }
    /*
    	总结:
    	1.用结构体变量作实参时,采取的是“值传递”的方式。形参必须是同类型的结构体变量。
    	2.在函数调用期间,形参也要占用内在单元,系统将实参中各成员的值传递给形参的各个成员。
    	3.这种传递方式在空间和时间上开销较大。此外,由于采用值传递方式,实参向形参意向传递数据,实参能够影响形参,但形参的值不会影响实参。
    	
    	在VC++6.0中执行结果:
    	-------------------------
    	NO.13
    	Name:Mili
    	Score:99.50, 69.69, 68.80
    	-------------------------
    */
    

    二-、结构体指针作为函数

    /*
    	2017年6月30日13:54:29
    	功能:结构体指针作函数参数
    */
    #include <stdio.h>
    
    struct stu
    {
    	int num;
    	char name[10];
    	float score;
    };
    void list(struct stu *p)
    {
    	p->score+=0.31;
    	printf("NO.:%d	Name:%s	Score:%.2f
    ", (*p).num, p->name, p->score);
    }
    void main(void)
    {
    	struct stu st1 = {13, "Mili", 99.69};
    	list(&st1);
    	printf("NO.%d	Name:%s	Score:%.2f
    ", st1.num, st1.name, st1.score);
    }
    /*
    	总结:
    	1.用指向结构体变量(或数组)的指针作实参,将结构体变量(或数组)的地址传给形参。这样形参值的改变会影响到实参的值。
    	2.在main函数中初奴化结构体变量st1,在list函数中改动其分数并显示其信息。看形参某个值的改变是否会影响到实参。
    
    	在VC++6.0中执行结果:
    	------------------------------------
    	NO.13  Name:Mili       Score:100.00——在调用函数中显示的结果
    	NO.13  Name:Mili       Score:100.00——在主函数中显示的结果
    	------------------------------------
    
    */
    

      

      

  • 相关阅读:
    分支与合并@基础
    创业者那些鲜为人知的事情
    centos7.5+nginx+php急速配置
    通过webhost扩展方式初始化EFCore数据库
    AspNetCore架构图
    Linux就该这样学--之常用linux命令及bash基础
    使用gitlab构建基于docker的持续集成(三)
    使用gitlab构建基于docker的持续集成(二)
    使用gitlab构建基于docker的持续集成(一)
    使用docker-compose配置mysql数据库并且初始化用户
  • 原文地址:https://www.cnblogs.com/wxt19941024/p/7098482.html
Copyright © 2011-2022 走看看