C语言学习之——结构

基础

数据类型——基本数据类型&构造数据类型

构造数据类型:e.g.数组——保存多个同种类型数据结构——保存多个不同类型数据

9.1-9.2定义

定义结构:

struct 结构名——————————struct student

{————————————————{

类型说明符 成员名1;———————int year;

类型说明符 成员名2;———————int   num;

类型说明符 成员名3;———————float score;

}————————————————}

定义变量:

struct student Alice, Bob;定义了结构体变量Alice, Bob。

(or使用宏定义用一个符号常量代替结构类型,例如用STU代替所有的struct student,但需要先定义一个#define STU struct student)

调用:Alice.num = XXX ,Alice.name, Alice.score

初始化:struct student Alice{1992,3,17};

注意VS2017中结构初始化时只能用{},不可以用()

9.5结构数组

注意VS2017中未定义长度的char输入都要定义为const char,否则会报“const char 无法用于初始化char类型的数据”的错误。

9.6结构指针

定义:struct student *p;

变量:

         p = &Alice;

         调用:Alice.name——(*p).name——p->name等价

数组:

         p = needs;——等价于——p = &needs[0];

示例代码如下:

#include <stdio.h>
#include <stdlib.h>
#define N 3

struct subject
{
	float Chinese;
	float English;
	float Math;
};
struct student
{
	const char *name;
	int num;
	int age;
	const char *sex;
	struct subject score;
}Bob = { "Bob", 001, 20, "M" ,(90.5, 87.5, 96.0 )};

struct minneed
{
	const char *name;
	char sex;
	unsigned short age;
	float amount;
};
 int main()
 {
	 //结构数组实例
	 struct minneed needs[N] = { {"张三",1,55,150.0},{"李四",0,48,130.0},{"王五",0,56,180.0} };
	 //定义指针
	 struct minneed *pneed;
	 pneed = needs;
	 struct student *p;
	 p = &Bob;
	 int i, m = 0;
	 for (i = 0; i < N; i++)
	 {
		 printf("姓名:%s\n性别%s\n年龄%d\n地址%.2f\n", needs[i].name, ((*pneed).sex == 1) ? "男" : "女", pneed->age, needs[m].amount);
		 pneed++;
	 }
	 for (i = 1; i < N; i++)
		 if (needs[m].age < needs[i].age)
			 m = i;
	 printf("年龄最大的人的个人资料:\n");
	 printf("姓名:%s\n性别%s\n年龄%d\n地址%.2f\n", needs[m].name, (needs[m].sex==1)?"男":"女", needs[m].age, needs[m].amount);
	 //结构变量一般初始化
	 printf("%s %d %d %s %f %f %f",Bob.name,Bob.num,(*p).age,p->sex,Bob.score.Chinese,Bob.score.English,Bob.score.Math);
	system("pause");
	return 0;
 }

猜你喜欢

转载自blog.csdn.net/guijieling/article/details/81240329