`
dcj3sjt126com
  • 浏览: 1871432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言学习八结构体

    博客分类:
  • C
C 
阅读更多

为什么需要结构体,看代码

# include <stdio.h>

struct Student	//定义一个学生类型,里面有age, score, sex, 然后可以定义这个类型的变量
{
	int age;
	float score;
	char sex;
}

int main(void)
{
	struct Student st = {80, 66.6, 'F'};
/*
	int age;
	float score;
	char sex;
	int age2;
	float score2;
	char sex2;
*/

	return 0;
}

 

定义结构体

# include <stdio.h>

//第一种方式,最常用的是第一种,第二种第三种都不好,最好不要使用
struct Student
{
	int age;
	float score;
	char sex;
};

//第二种方式
struct Student2
{
	int age;
	float score;
	char sex
} st2;

//第三种方式
struct
{
	int age;
	float score;
	char sex
} st3;

int main(void)
{
	struct Student st = {80, 66.6, 'F'};

	return 0;
}

 

结构体的初始化和初值:

# include <stdio.h>

struct Student
{
	int age;
	float score;
	char sex;
};

int main(void)
{
	struct Student st = {80, 66.6, 'F'};	//初始化  定义的同时赋初值
	struct Student st2;	//这样没有赋值,因为已经定义好了,所以后面赋值只能单个赋值
	st2.age = 10;
	st2.score = 88;
	st2.sex = 'F';

	printf("%d %f %c\n", st.age, st.score, st.sex);
	printf("%d %f %c\n", st2.age, st2.score, st2.sex);
	
	return 0;
}

 

从结构体中取值示例:

# include <stdio.h>

struct Student
{
	int age;
	float score;
	char sex;
};

int main(void)
{
	struct Student st = {80, 66.6F, 'F'};	//初始化  定义的同时赋初值
	struct Student * pst = &st;

	st.score = 66.6f;	//第一种方法
	pst->age = 88;	//第二种方式  pst->age 在计算机内部会被转换成 (*pst).age, 没有为什么,
					//这就是->的含义,这是一种硬性规定
					// 所以 pst->age 等价于 (*pst).age 也等价于 st.age
					// 我们之所以知道 pst->age 等价于 st.age, 是因为pst->age 是被转化成了
					// (*pst).age来执行

	printf("%d %f\n", st.age, pst->score);
	
	return 0;
}

 

结构体复习练习:

# include <stdio.h>

struct Student 
{
	int age;
	char sex;
	char name[100];
};		//分号不能省

int main(void)
{
	struct Student st = {20, 'F', "小娟"};
	printf("%d %c %s\n", st.age, st.sex, st.name);

	struct Student *pst = &st;
	printf("%d %c %s\n", pst->age, pst->sex, pst->name);	// ps->age 转化成 (*pst).age 也等价于st.age
	
	return 0;
}

 

 通过函数对结构体的输入输出示例:

输出函数采用了发送内容的形式

/*
	2013年3月15日20:14:31
	功能:通过函数对结构体的输入输出
*/
# include <stdio.h>
# include <string.h>

struct Student
{
	int age;
	char sex;
	char name[100];
};	//分号不能省
//结构的参数传递

void InputStudent(struct Student *);
void OutputStudent(struct Student);

int main(void)
{
	struct Student st;	//15行

	InputStudent(&st);	//对结构体变量输入
	// printf("%d %c %s\n", st.age, st.sex, st.name);
	OutputStudent(st);	//对结构体变量输出

	return 0;
}

void OutputStudent(struct Student ss)
{
	printf("%d %c %s\n", ss.age, ss.sex, ss.name);
}

void InputStudent(struct Student * pstu)	//pstu 只占4个字节
{
	(*pstu).age = 10;
	strcpy( pstu->name, "张三");
	pstu->sex = 'F';
}

/*
//本函数无法修改主函数 15行st的值,所以本函数是错误的
void InputStudent(struct Student stu)
{
	stu.age = 10;
	strcpy(stu.name, "张三");	//不能写成 stu.name = "张三";
	stu.sex = 'F';
}
*/

 

输出程序调优,选择传地址的方式:

/*
	2013年3月15日20:14:31
	示例:
		发送地址还是发送内容

	发送内容传输的内容太多,需要复制很多的内容,比较消耗时间和资源,影响效率,发送地址就比较小

	指针的优点之一:
		快速的传递数据,
		耗用内存小
		执行速度快

*/
# include <stdio.h>
# include <string.h>

struct Student
{
	int age;
	char sex;
	char name[100];
};	

void InputStudent(struct Student *);
void OutputStudent(struct Student *);

int main(void)
{
	struct Student st;	//15行
	//printf("%d\n", sizeof(st));

	InputStudent(&st);	//对结构体变量输入  必须发送st的地址
	OutputStudent(&st);	//对结构体变量输出	可以发送st的地址,也可以发送st的内容,但为了减少内在的耗费,也为了提高执行速度,推荐发送地址

	return 0;
}

void OutputStudent(struct Student * ss)
{
	printf("%d %c %s\n", ss->age, ss->sex, ss->name);
}

void InputStudent(struct Student * pstu)	//pstu 只占4个字节
{
	(*pstu).age = 10;
	strcpy( pstu->name, "张三");
	pstu->sex = 'F';
}

 

分享到:
评论

相关推荐

    C语言学习——结构体

    【C语言学习——结构体】 在C语言中,结构体是一种复合数据类型,它允许我们将不同类型的数据组合到一个单一的实体中,便于管理和操作。结构体的概念是C语言中非常重要的一个部分,它解决了在单一变量中存储多个...

    C语言程序(结构体)

    在C语言中,结构体(Struct)是一种复合...通过学习和理解结构体,你可以更好地理解和编写处理复杂数据的C语言程序。结构体是C语言中不可或缺的一部分,尤其在构建高级数据结构(如链表、树、图等)时显得尤为重要。

    c语言经典课件结构体

    在C语言中,结构体(struct)是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体。在上述课件中,讨论了如何使用...学习和熟练掌握C语言中的结构体,对理解程序设计和数据结构有着重要的作用。

    图书馆管理系统(C语言)(结构体数组)

    1.软件:Dev-C++ 2.测试页面及结构体信息见我专栏《资源》下的《C语言系统资源测试》 3.代码一共298行 4.代码排版有序,易于新手下载学习 5.大家下载后有什么问题,欢迎私聊解决

    C语言中的结构体的入门学习教程

    在C语言中,结构体(struct)是一种复合数据类型,它允许我们将不同类型的数据组合到一个单一的实体中,便于管理和操作。这对于表示复杂的数据结构,如记录或对象,非常有用。下面将详细介绍如何在C语言中使用结构体...

    学习C语言中的结构体.docx

    ### 学习C语言中的结构体 #### 一、理解基本概念 - **定义**: 结构体(Struct)是C语言中的一个复合数据类型,它能够将不同类型的数据整合到一个单元之中,形成一个新的数据结构。这有助于管理和组织复杂的程序...

    C语言程序设计结构体程序设计PPT学习教案.pptx

    总的来说,这个PPT学习教案全面介绍了C语言中的结构体编程,从基本概念到高级应用,旨在帮助学习者理解和掌握如何在C程序中有效地处理复杂的数据结构。通过学习这部分内容,开发者可以更好地设计和实现数据驱动的...

    C语言中的结构体:构建复杂数据类型的艺术

    通过本篇文章的学习,我们了解了结构体在C语言中的重要性和使用方法。结构体不仅能够帮助我们有效地组织和管理数据,还能让代码更具可读性和可维护性。掌握了结构体的概念和技巧后,我们可以在编写C语言程序时更加...

    C语言程序设计结构体程序设计PPT课件.pptx

    在C语言中,结构体(Struct)是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体,方便地处理复杂的数据结构。本篇PPT主要讲解了C语言中的结构体程序设计,包括以下几个核心知识点: 1. **...

    C语言实验七 结构体.zip

    在本实验中,我们将深入探讨C语言中的结构体这一...在这个实验中,你将学习到如何定义和操作结构体,处理文件输入输出,以及如何在结构体数组中查找特定条件的数据。这些技能对于进一步理解和编写复杂的C程序至关重要。

    C语言指针和结构体编程实例.zip

    本压缩包“C语言指针和结构体编程实例”显然包含了若干实例,旨在帮助学习者深入理解这两部分的知识。 首先,让我们了解一下指针。在C语言中,指针是一种特殊的变量,它存储了内存地址,可以用来间接访问其他变量。...

    图书信息管理系统(C语言)(结构体数组)

    2.测试页面及结构体信息见我专栏《资源》下的《C语言系统资源测试》 3.代码一64行,功能有输入、排序、浏览 4.代码排版有序,注释多,易于新手下载学习 5.大家下载后有什么问题,欢迎私聊解决 6.采用结构体数组...

    数据结构C语言严蔚敏 c结构体共用体PPT学习教案.pptx

    在C语言中,数据结构的实现往往依赖于结构体(struct)这一特性。严蔚敏教授的《数据结构C语言》教程深入浅出地介绍了结构体及其相关知识。 结构体是一种自定义的数据类型,它允许我们将不同类型的数据组合成一个...

    猜数字游戏(C语言)(结构体数组)

    3.基于结构体数组实现, 4.里面涉及控制台、随机函数偏僻知识点,对学习很有帮助 5.可以自己设置猜的位数、次数 6.代码有注释,易于理解 7.我还有其他资源,自己写的,欢迎私聊询问 8.若代码有什么问题,欢迎私聊...

    C语言程序设计结构体共用体及位运算PPT学习教案.pptx

    C语言中的结构体(Struct)和共用体(Union)是两种重要的复合数据类型,它们允许程序员将多个不同数据类型的变量组合成一个单一的实体。...通过学习和实践,你可以创建更灵活、更高效的C语言程序。

    家庭财务管理系统—可执行程序(c语言编译——结构体)

    无论是对于学习C语言的学生还是寻求个人财务管理解决方案的用户,这款程序都具有很高的参考价值。通过深入理解其设计原理和实现机制,我们可以更好地掌握结构体在实际问题解决中的应用,同时提升我们的编程技能。

    C语言实例循环嵌套数组指针函数结构体

    在C语言编程中,循环、...学习并熟练掌握这些基础知识,对于理解和编写高效的C语言程序至关重要。在提供的压缩包文件中,可能包含了一系列展示这些概念实际运用的代码示例,通过实践这些例子,可以加深对C语言的理解。

    C语言结构体共2页.pdf.zip

    在C语言中,结构体(struct)是...学习和理解结构体对于深入理解和编写复杂的C程序至关重要,尤其是在处理数据记录、文件I/O和系统编程等领域。在实际应用中,结构体与指针的结合使用可以实现更灵活的数据操作和管理。

    C语言结构体实现方法

    在C语言中,结构体(struct)是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体。这使得我们能够以更模块化和组织化的方式...在实际编程中,不断实践和学习,以提升对结构体的理解和运用能力。

    小型书店进销存管理系统(c语言/简单结构体)

    【小型书店进销存管理系统】是一款基于C语言开发的简易管理软件,主要针对小型书店的日常运营需求,如图书的...分析和学习这个代码可以帮助我们理解如何利用C语言的结构体和链表等数据结构来构建一个实际的应用程序。

Global site tag (gtag.js) - Google Analytics