精华内容
下载资源
问答
  • 文章目录一、结构体变量二、用结构体数组处理学生成绩三、结构体类型函数求平均值 用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上和求平均...


    用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上和求平均值上。两个实例的参考代码里面都有相应的注释,就不在外面分析了

    一、结构体变量

    C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
    在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。
    结构体

    二、用结构体数组处理学生成绩

    1、参考代码:

    #include <stdio.h>
    #define N 5
    int main()
    {
    	struct student{
    		char number[7];
    		char name[7];
    		int age;
    		float score[3];
    	};
    	int i;
    	struct student s[N]= {		{"130101","Lily",20,78,86,66},
    				{"130105","Poul",18,85,92,66},
    				{"134522","Dev",16,83,83,66},
    				{"103247","Jaun",21,75,94,66},
    				{"130105","Chen",23,96,72,66}	};
    	printf(" 学号    姓名  年龄  数学  语文  英语\n");
    	for(i=0; i<N; i++)
    	{
    		printf("%6s %6s %4d %6.1f %5.1f %5.1f\n",s[i].number, s[i].name, s[i].age, s[i].score[0], s[i].score[1], s[i].score[2]);
    	}
    	getchar();
    }
    

    2、参考结果:
    结构体学生成绩

    三、结构体类型函数求平均值

    1、参考代码:

    #include <stdio.h>
    #define N 5
    struct student{
    	char number[7];
    	char name[7];
    	int age;
    	float score[3];
    }; 
    struct score average(struct student *p, int n);		//申明结构体类型函数 
    
    struct score{
    	float sx;		//数学,语文,英语 
    	float yw;
    	float yy;
    };
    
    main()
    {
    	struct student s[N]= {		{"130101","Lily",20,78,86,66},
    								{"130105","Poul",18,85,92,66},
    								{"134522","Dev",16,83,83,66},
    								{"103247","Jaun",21,75,94,66},
    								{"130105","Chen",23,96,72,66}	};
    	struct score as;
    	as=average(s,5);		//传入结构体数组和学生个数
    	printf("数学平均成绩:%4.1f\n",as.sx);
    	printf("语文平均成绩:%4.1f\n",as.yw); 
    	printf("英语平均成绩:%4.1f\n",as.yy); 
    	getchar();
    }
    
    struct score average(struct student * p, int n)		//结构体类型函数,接受结构体类型数组和学生个数 ,用于返回结构日类型数组s 
    {
    	struct score s= {0,0,0};			//结构体类型数组赋初值	
    	int i;
    	for(i=0; i<n; i++)
    	{
    		s.sx+= (p+i)->score[0];		//利用线性链表,指针每向右移动 i 个,将其内的score数组内的语数英成绩加到对应的s.sx, s.yw, s.yy上 
    		s.yw+= (p+i)->score[1];
    		s.yy+= (p+i)->score[2];
    	}
    	s.sx /= 5;		//将总分除5求得平均值 
    	s.yw /= 5;
    	s.yy /= 5;
    	return s;		//返回结构体数组  struct student s 
    }
    

    2、参考结果:
    平均值

    展开全文
  • 最近码代码时遇到一个返回值的问题,一直报warning,...函数是Test_T类型的,而&c是代表数组首地址,严格来说是Test_T[]类型的,返回类型函数类型不一致,因此会出现warning。此处应该用return c或者return &c[0]。

    最近码代码时遇到一个返回值的问题,一直报warning,后来查了下资料才知道原因,现在做下记录。

    typedef struct
    {
        int a;
        int b;
    }Test_T;
    
    Test_T c[3];
    Test_T* fun(void)
    {
        return &c;
    }

    一开始是这样写的,但是在return的地方报 warning: return from incompatible pointer type [enabled by default],然后我又查了下关于***数组首地址***的问题,可参考

    https://blog.csdn.net/zjq1042970687/article/details/107929904

    果然是这里的问题,函数是Test_T类型的,而&c是代表数组首地址,严格来说是Test_T[]类型的,返回类型与函数类型不一致,因此会出现warning。此处应该用return c或者return &c[0]

    展开全文
  • #include &lt;iostream&gt;#include &lt;string&...结构体函数 结构体作为函数参数、结构体作为函数返回值---------------------------------*/struct time{ int hour; int mi...
    #include <iostream>
    #include <string>
    using namespace std;
    /*---------------------------------
    18.39.结构体与函数
     结构体作为函数参数、结构体作为函数返回值
    ---------------------------------*/
    struct time{
    	int hour;
    	int minute;
    };
    const int perhour=60;
    time sum(time t1,time t2);
    void show(time t);
    int main()
    {
    	time one={8,15};
    	time two={6,46};
    	time day=sum(one,two);
    	show(one);
    	show(two);
    	cout<<"两天的时间总计:";
    	show(day);
    	time three={2,10};
    	show(three);
    	cout<<"三天的时间总计:";
    	time day2=sum(day,three);
    	show(day2);
    	return 0;
    }
    time sum(time t1,time t2)
    {
    	time total;
    	total.minute=(t1.minute+t2.minute)%perhour;
    	total.hour=t1.hour+t2.hour+(t1.minute+t2.minute)/perhour;
    	return total;
    }
    void show(time t)
    {
    	cout<<"hour:"<<t.hour<<"\tminute:"<<t.minute<<endl;
    }
    
    运行结果:
    
    hour:8  minute:15
    hour:6  minute:46
    两天的时间总计:hour:15 minute:1
    hour:2  minute:10
    三天的时间总计:hour:17 minute:11
    Press any key to continue

    展开全文
  • 结构体函数

    2014-02-24 17:30:23
     结构体是一种数据类型,作为数据类型,它就可以定义变量,同时也可以作为函数的形式参数,或者让函数的返回值为一个结构体类型。下面通过一个代码来说明这一点:  #include  using namespace std;  struct ...
    结构体和函数
           结构体是一种数据类型,作为数据类型,它就可以定义变量,同时也可以作为函数的形式参数,或者让函数的返回值为一个结构体类型。下面通过一个代码来说明这一点:
           #include <iostream>
           using namespace std;
           struct   people
      {
                 int    weight;
                 int     tall;
                 bool  sex;
                 int  age;
            };
            const  int  class=60;
            people  &sum(people1,people2);
            void   show(people);
            int  main()
            {
                 people  a=(80,190,1,19);
                 people  b=(90,200,1,21);
                 people *number=&total(a,b);
                 cout<<"两人总计为:"<<endl;
                 show(*number);
                 delete number;
                 return 0;
             }       
            people &sum(people t1,people t2)
    {
            people *total=new people;
            total->tall=t1.tall+t2.tall;
            total->weight=t1.weight+t2.weight;
            return  *total;
    }
            void  show(people t3)
    {
            cout<<t3.tall<<endl;
    }

    展开全文
  • 定义了一个全局变量的结构体,然后又定义了一个结构体类型函数函数的返回值如何返回一个空值,显然return 0;是不行的
  • 将一个结构体变量中的数据传递给另一个函数,有下列3种方法: 用结构体变量名作参数。一般较少用这种方法。用指向结构体变量的指针作实参,将结构体变量的地址传给形参。用结构体变量的引用变量作函数参数。 ...
  • 结构体构造函数

    2021-02-21 10:13:48
    三种结构体初始化方法 1.利用结构体自带的默认构造函数 2.利用带参数的构造函数 3.利用默认无参的构造函数 在建立结构体数组时,如果只写了带参数的构造...结构体是否有构造函数和析构函数,C里面没有,C++里面有。 C
  • 函数指针 typedef 用法 回调函数 结构体存储函数地址
  • 将一个结构体变量中的数据传递给另一个函数,有下列3种方法: 用结构体变量名作参数。一般较少用这种方法。用指向结构体变量的指针作实参,将结构体变量的地址传给形参。用结构体变量的引用变量作函数参数。 ...
  • 结构体函数参数

    千次阅读 2018-02-27 20:38:14
    结构体类型定义及结构体变量定义 &lt;2&gt;结构体变量的引用 &lt;3&gt;结构体变量指针 《2》结构体知识进阶 &lt;1&gt;结构体做函数参数 &lt;2&gt;结构体数组 &lt;3&...
  • C++ 结构体构造函数

    千次阅读 2019-09-17 15:39:40
    结构体构造函数必须是与结构体名称相同的公共成员函数,并且没有返回类型。 写法和类是类似的。 struct node { int label; node(int x):label(x){} } struct node { int label; node(int x) { label = x;...
  • 结构体定义函数

    2021-03-14 13:13:24
    C/C++语言中的基本数据类型有int,bool,float,double,char。int有三个修饰符short,long,...函数不只可以由int和void定义,这些数据类型都可以定义函数,而且结构体也可以,这样就可以不用指针就做到结构体的输出 ...
  • C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再...
  • 把c++的结构体、数据类型函数定义转换成对应的c#表达,很强大。
  • 在C++中,将一个结构体变量中的数据传递给另一个函数,有3种方法: 用结构体变量名作参数,一般较少用这种方法。 用指向结构体变量的指针作实参,将结构体变量的地址传给形参。 用结构体变量的引用变量作函数参数。 ...
  • 函数指针&指针函数&结构体调用函数

    千次阅读 2017-07-11 13:57:08
    结构体通过指针调用函数的方法在项目中比较实用:上层函数实现,底层调用从而实现底层通知上层的回调功能!!! 在此说一下函数指针和指针函数这两个概念,下面先说一下两者的区别。 再者就是说一下结构体是如何通过...
  • C语言中结构体函数

    2020-02-11 21:26:24
    在C语言中,结构体内部不可...但是定义函数时,可以是结构体类型, 如: struct student { int num; char name[10]; char sex; }; struct student search(void) { struct student xiaoming; … return xiaoming; } ...
  • 最近在写程序的时候,经常被结构体搞得晕头转向,尤其是关于结构体作为函数参数的情况,在此总结。 以asctime函数为例,函数原型为: char *asctime(const struct tm *tm); 分析可知,参数类型为输入型参数,...
  • 结构体类型不同于数组,而结构体类型与内置类型有很多相同之处。数组名代表数组的第一个元素的地址,而结构体名代表的却不是地址而是第一个元素的值。在作为函数参数时,和内置类型一样,可以通过值(结构体名)、...
  • 最近在STM的GPIO结构体定义中看到源...1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针域 } *LinkList; 定义方式2: struct LNode { int data; // 数据域 ...
  • 结构体类型(掌握点): 建立结构体类型 定义结构体类型变量 初始化结构体和引用结构体变量(3种方法,见下) 使用结构体数组 结构体指针(重要) 指向结构体变量的指针 指向结构体数组的指针 ...
  • 源码: #include <stdio.h>...Stu getStu(int x, int y)//以结构体定义函数类型 { Stu result; result.a = x + 1 + x*x; result.b = y + 2017; return result; } int main() { int a = 2, b =
  • //============================================================================ // Name : 结构体引用1.cpp // Author : // Version : // Copyright : Your copyright notice // Description : He
  • c类结构体嵌套函数

    2018-03-05 16:36:33
    //c类结构体嵌套函数//typdef void (*pfunc)(int a, int b){retrun;}/*typedef struct stu{ int a; int b; pfunc func;}*///c++中的构造函数和析构函数//#include&lt;iostream&gt;//using namespace std;/*#...
  • android jni传递结构体类型给c函数,返回结构体,怎么写啊 c方法:OutAnalyseResultPacket* EcgMainPro(InEcgPacket* pPacKet) 参数和返回值都是结构体类型
  • 结构体作为函数的参数 结构体作为函数的参数分为两种:结构体和结构体数组。 不管是那种作为函数的参数,本质上参与函数运算的都是...声明老师结构体类型,并用typedef重命名 struct teacher{  char name[20];  
  • 三种结构体初始化方法 1.利用结构体自带的默认构造函数 ... 结构体是否有构造函数和析构函数,C里面没有,C++里面有。 C++里根本就没有结构,仅仅为了兼容c才有结构这种东西,实际上除了名字以外,C++的结...
  • 利用C语言结构体封装函数

    千次阅读 2018-01-15 11:53:43
    C++语言类中可以封装函数,体现了模块操做的整体性,下面代码便是C++语言对串口函数的封装,这样操作便于调用。 class MarlinSerial //: public Stream { public: MarlinSerial(); void begin(long); void end...
  • 结构体作为函数参数

    2017-07-08 17:51:15
    结构体宏观上可以当做变量看待,可以作为函数参数,也可以作为函数返回值。再软件编程上的使用,可以与C++的类,封装的功能平分天下。 将一个结构体变量中的数据传递给另一个函数,有下列3种方法: 用结构体变量...
  • 1.demo:计算成绩及格的学生个数 #include <...struct Student{ //建立结构体类型struct Student char name[15]; //名字 char id[15]; //学号 int score; //成绩 }temp; int judge_pass(struct St...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 254,485
精华内容 101,794
关键字:

结构体类型的函数