当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

C语言学习八结构体

发表于: 2013-03-16   作者:dcj3sjt126com   来源:转载   浏览:
c
摘要: 为什么需要结构体,看代码 # include <stdio.h> struct Student //定义一个学生类型,里面有age, score, sex, 然后可以定义这个类型的变量 { int age; float score; char sex; } int main(void) { struct Student st = {80, 66.6,

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

# 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语言学习八结构体

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明:   enum 枚举类型名字
#include <stdio.h> #include <string.h> typedef struct { char id[10]; char name[26
<img src="http://img.it610.com/imag
#include <iostream.h> int main() { int i = 100; int& j = i; j = 1000; printf("%d\n",i);
本文目录 一、什么是结构体 二、结构体的定义 三、结构体变量的定义 四、结构体的注意点 五、结构体
本文目录 一、什么是结构体 二、结构体的定义 三、结构体变量的定义 四、结构体的注意点 五、结构体
本文目录 一、什么是结构体 二、结构体的定义 三、结构体变量的定义 四、结构体的注意点 五、结构体
C语言Struct中的函数和函数指针 在第3回里的【Struct(结构体)杂谈之三】借我一双慧眼吧,让我把C++
涉及知识点:数组,结构体和指针 分析以下程序的运行结果: #include "stdio.h" struct sp { int a;
结构体(struct)比特字段(:) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/deta
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号