结构的定义

1.定义

#include <stdio.h>
struct date{
		int month;//三个成员变量 
		int day;
		int year;
	};//这个地方有分号!!!因为一个结构体是一个语句 
	/*
	放在所有函数的外面,可以到处使用
	*/ 
int main()
{
	
	struct date today;//变量类型是struct date 
	today.month=07;
	today.day=31;
	today.year=2014;
	printf("Today's date is %i-%i-%i.\n",
	today.year,today.month,today.day);
	return 0;
}

附:声明结构的形式
第一种
#include <stdio.h>
struct point{int x;int y;};
int main()
{
struct point p1,p2;
}
p1和p2都是point型,里面有x和y的值
第二种
#include <stdio.h>
struct point{int x;int y;} p1,p2;
int main()
{
}
p1和p2都是point型,里面有x和y的值

2.初始化

#include <stdio.h>
struct date{
	int month;
	int day;
	int year;
};
int main()
{
	struct date today={07,31,2014};//老老实实依次赋初值 
	struct date thismonth={.month=7,.year=2014};//指定某个变量的值 
	printf("Today's date is %i-%i-%i.\n", 
	today.year,today.month,today.day);//2014-7-31
	
	printf("This month is %i-%i-%i.\n",
	thismonth.year,thismonth.month,thismonth.day);//2014-7-0
	return 0;
} 
//在Dev C++中 无法编译这个代码 

3.成员
结构和数组有点像
数组用[]运算符和下标访问其成员
a[0]=10;
结构用 . 运算符和名字访问其成员
today.day
student.firstName
p1.x
p1.y
要访问整个结构,直接用结构变量的名字
对于整个结构,可以做赋值、取地址、也可以传递给函数参数
p1=(struct point){5,10};相当于p1.x=5;p1.y=10;
p1=p2;相当于p1.x=p2.x; p1.y=p2.y;

#include <stdio.h>
struct date{
  int month;int day;int year;
};
int main()
{
  struct date today;
  today=(struct date){07,31,2014};
  struct date day;
  day=today;
  day.year=2015;
  printf("Today's date is %i-%i-%i.\n",
  today.year,today.month,today.day);
  printf("The day's date is %i-%i-%i.\n",
  day.year,day.month,day.day);
  return 0;
} 

4.指针
和数组不同,结构变量的名字并不是结构变量的地址,
必须使用&运算符
struct date *pDate=&today;

#include <stdio.h>
struct date{
	int month;int day;int year;
};
int main()
{
	struct date today;
	today=(struct date){07,31,2014};
	struct date day;
	struct date *pDate=&today;
	printf("Today's date is %i-%i-%i.\n",
	today.year,today.month,today.day);
	printf("The day's date is %i-%i-%i.\n",
	day.year,day.month,day.day);
	printf("address of today is %p\n",pDate);//输出地址 
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值