对C语言 结构体 和 结构变量

一、结构体/结构的引入

在学生的登录记录表中,姓名应该为字符型、学号可以为整形或字符型,年龄应该为整形,性别应该为字符型,成绩可以整形或实型。显然不能用一个数组来存放这一组数据,因为数组各元素的类型和元素都必须一致。

二、定义结构

为了定义结构,必须用struct语句。struct语句定义了一个包含多个成员的新的数据类型。

Struct 结构名
{
成员列表;
}变量名列表;

Struct stu
{
Int num;
Char name[20];
Char sex;
Float score;
}boy1,boy2;

三、定义结构变量的三种方式

1.先定义结构,再说明结构变量
struct stu
{
int num;
char name[20];
int age;
};
struct stu boy1,boy2;

例如:
#define STU struct stu
STU
{
int num;
char name[20];
int age;
};
STU boy1,boy2;
2.在定义结构类型的同时说明结构变量。
struct stu
{
int num;
char name[20];
int age;
}boy1,boy2;
3.直接说明结构变量
struct
{
int num;
char name[20];
int age;
}boy1,boy2; 

四、结构体嵌套

首先定义一个date,由month(月),day(日),year(年)三个成员组成。在定义并说明变量boy1和boy2时,其中的成员birthday被说明为date结构类型。成员名可以与其他的变量同名,互不干扰。

Struct date

{

Int month;

Int day;

Int year;

};

Struct {

Int num;

Char name[20];

Char sex;

Struct date birthday;

Float score;

}boy1,boy2;

Num

Name

Sex

Birthday

score

Month

Day

year

 五、结构变量

   5.1  结构变量成员的表示方法

在程序中使用结构变量时,往往不把他作为一个整体来使用。

在程序中具有相同类型的结构变量可以相互的赋值,一般结构变量的使用,包括赋值、输入、输出、运算等都是通过结构变量的成员来实现的。

结构变量成员的一般形式:

结构变量名.成员名   例如:boy1.num  即第一个人的学号。

**如果成员变量本身就是一个结构,那么需要逐级找到最低级的成员才能使用

例如:boy1.birthday.month 即第一个人出生的月份。

   5.2  结构变量的赋值

结构变量的赋值就是给各个成员赋值,可以用输入语句或者赋值语句来完成。

/*

本程序中用赋值语句给num和name两个成员赋值,name是一个字符串常量。用sacanf函数动态的输入sex和score成员值,然后就把boy1的所有的成员的值整体赋值于boy2。最后分别输出boy2的各个成员值,

本示例表示了结构变量的赋值,输入和输出状态。

*/

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char **argv)
{
	struct stu	
	{
		int num;
		char name[20];
		char sex[20];
		float score;
	}boy1,boy2;

	boy1.num = 102;
	strcpy(boy1.name,"shi wen jie");
	printf("please input sex and score:\n");
	scanf("%s %f",boy1.sex,&boy1.score);

	boy2 = boy1;
	printf("num\tname\t\tsex\tscore\n");
	printf("num=%d\tname=%s\tsex=%s\tscore=%f\n",boy2.num,boy2.name,boy2.sex,boy2.score);
	return 0;
}

   5.3  结构变量的初始化

和其他类型的变量一样,对结构变量可以在定义时进行初始化赋值。

#include<stdio.h>
int main(int argc,char **argv)
{
	struct stu
	{
		int num;
		char *name;
		char sex[20];   //或者是char *sex;
		float score;
	}boy2,boy1 = {102,"shi wen jie","nan",65.7};
	
	boy2 = boy1;
	printf("num\tname\tsex\tscore\n");
	printf("num=%d\tname=%s\tsex=%s\tscore=%f\n",boy2.num,boy2.name,boy2.sex,boy2.score);
}

  • 14
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值