C++面向对象基础二

这一篇主要说一下结构体的基础问题!

结构体是C语言里面的东东,但是c++为了兼容C故而也有结构体这个东东保留下来了

     为了好说明 先引入一个简单的结构体

     

#include <string>
#include <iostream>
using namespace std;

struct birthday
{ 
	int day ;
	int month ;
	int year ;

};
struct StrutDemo01
{
  string name ;
  int num ;
  char sex ;
  int age ;
  float score ;
  birthday bir ;  //结构体中的结构体成员
};


 

1→结构体的定义

      (如上)

2→结构体的初始化

    // 第一种初始化

       struct StrutDemo01 demo = {"AA", 002 ,'T',10,10.0,{1,1,1}};  

    // 第二种初始化

   struct StrutDemo01 demo  ;
    demo.name ="abcd";
   demo.num = 001 ;
   demo.sex ='M';
   demo.age =1;
   demo.score =100.0;

3→结构体变量的引用

     这里讲一下结构体可以转化为三种方式

    ① :struct StrutDemo01 demo  ; //原始引用

    ②: struct StrutDemo01 demo  ;//指针模式

              struct    StrutDemo01 *p_demo  = &demo;

    ③: struct StrutDemo01 demo  ;  //引用模式

               struct    StrutDemo01 & y_demo  = demo ;

      然后可以分别使用这三种方式去引用结构体变量的成员

     demo.num ;

     p_demp->num;

     y_demo .num ;

4→结构体类型做函数参数(重点)

     如3所述我们可以吧结构体转化为三种模式则函数的参数对应也可以使用这三种模式了。对应代码见最下面:

5→动态分配结构体内存和销毁

      动态建立内存使用new ,销毁使用delete

完整demo

//  头文件

#include <iostream>
#include <string>
#include "StrutDemo01.cpp" ;
using namespace std ;
   void print(StrutDemo01 ,string flag);
   void print_p(StrutDemo01* ,string flag);
   void print_y(StrutDemo01& ,string flag);
   void dymanicStruct(StrutDemo01* ,string flag); //动态分配内存以及销毁
   


//cpp

#include "StructDemo.h"
int main( void )
{
  
   struct StrutDemo01 demo = {"AA", 002 ,'T',10,10.0,{1,1,1}};  //第一种初始化
   /* 第二种初始化
   demo.name ="abcd";
   demo.num = 001 ;
   demo.sex ='M';
   demo.age =1;
   demo.score =100.0;*/
   StrutDemo01 * pdemo =&demo ;
   print_y(demo,"------通过引用访问结构体------" );
   print_p(pdemo,"------通过指针访问结构体------");
   print(demo,"------通过结构体名访问结构体------");
   dymanicStruct(pdemo,"------动态访问结构体------");
   return 0;
}

void dymanicStruct(StrutDemo01* demo ,string flag)
{
	demo = new StrutDemo01;  //返回的是一个指针
	demo->name ="dymanic" ;
	demo->age = 10;
	demo->num = 10;
	demo->score =10;
	demo->sex = 'M';
	demo->bir.year =2011 ;
	demo->bir.month =10;
	demo->bir.day = 10;
    
	print_p(demo ,flag );
    delete demo; //销毁内存

}

void print_y(StrutDemo01 &demo  ,string flag) //通过引用访问
{
	cout<<flag<<endl;
	cout<<"name : "<<demo.name <<"\nnum : "<<demo.num<<"\nsex : "<<demo.sex<<"\nscore : " <<demo.score<<"\nbir :"<<demo.bir.year <<"-"<<demo.bir.month<<"-"<<demo.bir.day
		<<endl; 
}
void print_p(StrutDemo01 * demo ,string flag) //通过指针访问
{
	cout<<flag<<endl;
	cout<<"\nname : "<<demo->name <<"\nnum : "<<demo->num<<"\nsex : "<<demo->sex<<"\nscore : " <<demo->score<<"\nbir :"<<demo->bir.year <<"-"<<demo->bir.month<<"-"<<demo->bir.day
		<<endl; 
}
void print(StrutDemo01 demo ,string flag) //通过结构体名访问
{
	cout<<flag<<endl;
	cout<<"name : "<<demo.name <<"\nnum : "<<demo.num<<"\nsex : "<<demo.sex<<"\nscore : " <<demo.score<<"\nbir :"<<demo.bir.year <<"-"<<demo.bir.month<<"-"<<demo.bir.day
		<<endl; 
}


//结构体

#include <string>
#include <iostream>
using namespace std;

struct birthday
{ 
	int day ;
	int month ;
	int year ;

};
struct StrutDemo01
{
  string name ;
  int num ;
  char sex ;
  int age ;
  float score ;
  birthday bir ;  //结构体中的结构体成员
};

 完整的demo下载 (免积分)http://download.csdn.net/detail/pdw_jsp/4010573

小弟以前是做java的,对c++学习不久。希望有什么问题提出来,小弟感激不尽。。。。。。

  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值