其实c++的结构体可以理解为类似于python的字典,我个人理解, 但有区别

先看结构

  1. #include <iostream>
  2. 关键字 标记成为新类型的名称
  3. struct inflatable
  4. {
  5. std::string mystr; 结构成员
  6. char name[];
  7. float volume;
  8. double price;
  9. };

c++ 在声明结构变量的时候可以省略关键字struct

同时还要注意外部声明, 和局部声明

  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4.  
  5. struct inflatable
  6. {
  7. std::string mystr;
  8. char name[];
  9. float volume;
  10. double price;
  11. };
  12.  
  13. int main(int argc, char const *argv[]) {
  14. using namespace std;
  15.  
  16. inflatable guest = {
  17. "hello",
  18. "Glorious Gloria",
  19. 1.88,
  20. 29.99
  21. };
  22. inflatable pal = {
  23. "world",
  24. "Audacious Arthur",
  25. 3.12,
  26. 32.99
  27. };
  28. int a=12.40;
  29. std::cout << guest.mystr << '\n';
  30. std::cout << a << '\n';
  31. std::cout << "Expand your guest list with <<" << guest.name << ">>"
  32. << "and" << "<<" << pal.name << ">>" << '\n';
  33. std::cout << "you can have both for $" << guest.price + pal.price <<'\n';
  34.  
  35. return ;
  36. }

其他结构属性

  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4.  
  5. struct inflatable
  6. {
  7. std::string mystr;
  8. char name[];
  9. float volume;
  10. double price;
  11. };
  12.  
  13. int main(int argc, char const *argv[]) {
  14. using namespace std;
  15. inflatable guest = {
  16. "hello",
  17. "Glorious Gloria",
  18. 1.88,
  19. 29.99
  20. };
  21. inflatable choice = guest; 这种方法叫成员赋值
    或者

inflatable choice;
choice = guest;

  1. std::cout << "Expand your guest list with <<" << guest.name << ">>" << '\n';
  2. std::cout << "choice choice.mystr ---->" << choice.mystr << '\n';
  3. return ;
  4. }

还可以

  1. struct inflatable
  2. {
  3. std::string mystr;
  4. char name[];
  5. float volume;
  6. double price;
  7. } mr_glitz = {"hello", "Glorious", 1.11, };
    当然,也可以不赋值

结构数组

也可以创建元素为结构的数组, 方法和创建基本类型数组完全相同。例如:

  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4.  
  5. struct inflatable
  6. {
  7. std::string mystr;
  8. char name[];
  9. float volume;
  10. double price;
  11. } mr_glitz = {"hello", "Glorious", 1.11, };
  12.  
  13. int main(int argc, char const *argv[]) {
  14. using namespace std;
  15.  
  16. inflatable guests[] = {
  17. {"hello", "doman", 2.1, 2.22},
  18. // {"world", "corleone", 2.2, 3333}
  19. };
  20. std::cout << "guests[0].mystr: " << guests[].mystr << '\n';
  21. std::cout << "guests[1].name: " << guests[].name << '\n';
  22.  
  23. return ;
  24. }

结构中的位字段

  

  1. struct torgle_register
  2. {
  3. unsigned int SN : ;
  4. unsigned int :;
  5. bool goodIN : ;
  6. bool goodTorgle : ;
  7. }
  8.  
  9. torgle_register tr = {, true, false};

C++复合类型(结构体)的更多相关文章

  1. 黑马程序员——C语言基础 变量类型 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...

  2. C++复合类型(结构,共用体,枚举)

    •结构是用户定义的类型,而结构的声明定义了这种类型的数据属性. 一.关键字struct声明:   定义了一种新类型 struct inflatable{ char name[20];//结构成员 fl ...

  3. Swift超详细的基础语法-结构体,结构体构造器,定义成员方法, 值类型, 扩充函数

    知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相 ...

  4. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  5. 自定义数据类型 C++ 结构体类型 共同体类型 枚举类型 类类型{}

    一.结构体类型 结构体类型,共用体类型,枚举类型,类类型等统称为自定义类型(user-defined-type,UDT). 结构体相当于其他高级语言中的记录(record);例如: struct St ...

  6. Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别

    Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始- ...

  7. 17.结构体(typedef)

    1.结构体 a.结构体类型定义b.结构体变量定义c.结构体变量的初始化d.typedef改类型名e.点运算符和指针法操作结构体f.结构体也是一种数据类型,复合类型,自定义类型 2.结构体变量的定义 ( ...

  8. 07.C语言:结构体、共用体、枚举

    一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...

  9. go 基础 结构体

    结构体是类型中带有成员的复合类型.go语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. go语言中的类型可以被实例化,使用new和&构造类型实例的类型是类型的指针. 结构体 ...

  10. C语言 ---- 函数 结构体 iOS学习-----细碎知识点总结

    函数的定义     返回值类型 函数名(形式参数列表) {        函数的实现     } 函数不允许嵌套定义 如果函数的定义在主调函数之后,那么要进行提前声明才能使用. // 匿名结构体,结构 ...

随机推荐

  1. vue-webpack快速建立项目模板

  2. Spring、SpringMVC和Springboot的区别(网摘)

    spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc. spring mvc 是只是spring 处理web层请求的一个模 ...

  3. js实现类似微信网页版在可编辑的div中粘贴内容时过滤剪贴板的内容,光标始终在粘贴内容后面,以及将光标定位到最后的方法

    过滤剪贴板内容以及定位可编辑div光标的方法: <!DOCTYPE html><html lang="en"><head>  <meta ...

  4. Ubuntu 系统下卸载 IntelliJ IDEA

    参考:http://blog.csdn.net/csdnones/article/details/50449947 卸载只需要删除解压出来的目录就行了,然后删除/home/你用登录名/IntelliJ ...

  5. 【论文笔记】多任务学习(Multi-Task Learning)

    1. 前言 多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法.在机器学习领域,标准的算法理论是一次学习一个任务,也就 ...

  6. ios 根据scrollview滑动的偏移计算滑动到第几页算法(不同需求不同计算)

    第一种: CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.content ...

  7. Java中LinkedList实现原理

    数据结构 LinkedList是基于链表结构实现,所以在LinkedList类中包含了first和last两个指针(类型为Node).Node中包含了对prev节点.next节点的引用,这样就构成了双 ...

  8. 为什么hash作为内存使用的经典数据结构?

    听到这样说法:hash是内存中使用的经典数据结构.内存是典型的随机访问设备. 为什么hash这种数据结构很适合内存使用呢?如何理解内存是随机访问设备呢? 因为我想知其所以然,如何理解背后的原因,我花费 ...

  9. ArrayList, Vector和CopyOnWriteArrayList对比学习

    ArrayList线程不安全的例子 线程安全就是多线程访问时,采用加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据 ...

  10. 宇宙最强spacemacs

    这个标题背后的潜台词其实是:逼格是什么炼成的? 此处省略一万字. Emacs就不多说了,神之编辑器,但其快捷键实在是....Evil.好啦,现在来了Spacemacs,结合Vim与Emacs二者的优点 ...