C++ 结构

来源:互联网 发布:windows7淘宝 编辑:程序博客网 时间:2024/06/05 02:05

示例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.  一个结构可以用作另一个结构的成员


0 0