C++面向对象基础二
来源:互联网 发布:布丁动漫软件下载 编辑:程序博客网 时间:2024/05/22 05:16
这一篇主要说一下结构体的基础问题!
结构体是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++学习不久。希望有什么问题提出来,小弟感激不尽。。。。。。
- C#VS面向对象基础(二)
- 【C#】面向对象基础
- C++面向对象基础二
- 面向对象基础<二>---继承
- Java面向对象基础二
- 面向对象基础加强二
- 面向对象基础(二)
- Java面向对象基础(二)
- 面向对象基础(二)
- Objective-C 面向对象基础
- Object-C 面向对象基础
- Objective-C基础学习笔记(二)-面向对象与面向过程的两种思想
- 黑马程序员-iOS基础-Objective-C基础(二)面向对象思想及类
- javascript面向对象技术基础(二)
- javascript面向对象技术基础(二)
- javascript面向对象技术基础(二)
- JS面向对象的基础(二)
- Javascript面向对象基础二-数组
- 用开源软件搭建企业内部协作平台, Kill QQ MSN
- SVM入门(四五六)线性分类器的求解
- 取对应枚举的值
- 研磨设计模式之桥接模式-4
- ASCII表
- C++面向对象基础二
- 嵌入式Linux下的LCD驱动程序设计与实现
- lpc3250linux固化流程
- stagefright与opencore对比
- linux 多线程编程
- Marshal.SizeOf和sizeof的区别
- shell date 获取昨天日期及几种特殊格式
- 清除自定义通知里的过去的项目
- Linux SSH远程文件/目录传输命令scp