示例1:
#include <iostream.h>
/*
结构通俗的理解,程序员自己定义的数据类型;
aClock是声明的全局变量;
小伙伴们可以试着不用全局变量,编译试试会出现一些问题,想想为什么?答案在第二个程序中可以找到
*/
struct clock{int hour;
int minute;
int second;
} aClock;
void update(){
aClock.second++;
if(aClock.second==60){
aClock.second=0;
aClock.minute++;
}
if(aClock.minute==60){
aClock.minute=0;
aClock.hour++;
}
if(aClock.hour==24){
aClock.hour=0;
}
}
void display(){
cout<<aClock.hour<<":"<<aClock.minute<<":"<<aClock.second<<endl;
}
void main()
{
aClock.hour=aClock.minute=aClock.second=0;
for(int i=0;i<100;i++)
{
update();
display();
}
}
示例2. 结构和指针
/*
新建一个Windows32 console Application;共有3个文件clock.h clock.cpp 工程名.cpp.
*/
//clock.h
struct clock{
int hour;
int minute;
int second;
};
void display(clock *t);
void update(clock *t);
//clock.cpp
//注意:#include "stdafx.h" ,该行一定是在第一行,避免错误。编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,
#include "stdafx.h"
#include <iostream.h>
#include "clock.h"
void update(clock *t){
t->second++;
if(t->second==60){
t->second=0;
t->minute++;
}
if(t->minute==60){
t->minute=0;
t->hour++;
}
if(t->hour==24){
t->hour=0;
}
}
void display(clock *t){
cout<<t->hour<<':'<<t->minute<<':'<<t->second<<endl;
}
//工程名.cpp
#include "stdafx.h"
#include "clock.h"
int main(int argc, char* argv[])
{
clock aClock;
aClock.hour=aClock.minute=aClock.second=0;
for(int i=0;i<100;i++)
{
update(&aClock);
display(&aClock);
}
return 0;
}
示例3:结构与函数
#include <iostream.h>
/*
结构可以用作函数的参数和返回值,当结构用作函数参数时,调用过程采用只调用;
然而当结构中包含大量数据时,值调用方法会影响程序的运行效率,这时可以采用引用调用。
const是一个类型修饰符,在变量说明语句中,const被用于冻结一个变量,使其值在程序中不能被进一步改变。
在说明const变量时,必须对该变量进行初始化,例如:float const f=6.0;//const是左结合的
const也可以修饰派生类型;当修饰基本类型时,经常写成const float f=6.0;
引用运算符&,用于定义一个引用;如果这个引用不是用作函数的参数或返回值,则在说明时必须进行初始化
*/
struct myStruct{
int a,b;
};
void fun(const myStruct&);
void main()
{
myStruct s;
s.a = 100;
fun(s);
}
void fun(const myStruct& t){
cout<<t.a<<endl;
}
示例4. 一个结构可以用作另一个结构的成员