struct结构体在c和c++中的差别
非常多次遇到这个struct的问题,今天在这里简单总结一下我的理解
一、struct在C 中的使用
1、单独使用struct定义结构体类型
struct Student {
int id;
int name;
}stu1;
struct Student stu2;
stu1.id=1;
stu2.id=2;
上面定义了一个结构体类型struct Student 和一个结构体类型变量stu1。
所以有两种定义结构体变量的方式:
一种是这就跟在结构体定义的后面(}之后),一种是用 struct 结构体名 结构体变量名。
2、typedef:typedef作为C的一个keyword,在C 和C++ 中都是给一个数据类型定义一个新的名字。这里的数据类型包含基本数据类型(int, char等)和自己定义的数据类型(struct)。
编程中使用typedef,其目的一般有两个。一个是给变量一个easy记且意义明白的新名字。还有一个是简化一些比較复杂的类型声明。
所以有:
typedef struct Student {
int id;
string name;
}Student;
Student stu;
stu.id=1;
stu.name="zhangsan";
当中,typedef 给自己定义类型struct Student 起了一个简单的别名:Student
所以Student stu; 就等价于1中的struct Student stu;
3、typedef 定义批量的类型别名
typedef struct Student {
int id;
string name;
}Student1,Student2,Student3;
typedef定义了 3 个struct Student 类型的别名
可是假设去掉了typedef,那么在C++中。Student1,Student2,Student3将是3个结构体变量
当然。假设,Student 以后用不着。则能够省略Student,例如以下所看到的功能与3同样。
typedef struct {
int id;
string name;
}Student1,Student2,Student3;
二、C++中的struct使用方法
1、
<pre name="code" class="cpp">struct Student {
int id;
string name;
}stu;
stu.id = 1;
stu.name="";
定义了一个Student类型的结构体。还声明了Student类型的一个结构体变量stu。
2、typedef
typedef struct Student {
int id;
string name;
}stu2;
stu2 s2;
s2.id=1;
s2.name="zhangsan";
上面 typedef 定义了一个结构体类型 stu2,全部要给id赋值,必须先定义一个结构体类型变量,如s2,然后才干s2.id =1;
3、struct 定义批量的结构体变量
struct Student {
int id=1;
string name;
}stu1,stu2,stu3;
定义了3个结构体变量 stu1,stu2,stu3
stu1.id =1;
stu2.id =2;
stu3.id =3;
struct结构体在c和c++中的差别的更多相关文章
- C语言 Struct 结构体在 Java 中的体现
大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习. 和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东 ...
- C# Struct结构体里数组长度的指定
typedef struct Point{ unsigned short x; unsigned short y; }mPoint;//点坐标 typedef struct Line{ mPoint ...
- C#基础--struct(结构体)
结构体和类有点类似 我们定义一个类的时候 是class 类名 定义结构体的时候是 struct 结构体名 结构体的写法 struct Point { // public int ...
- 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组
一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...
- C#语言struct结构体适用场景和注意事项
在C#语言中struct结构体和class之间的区别主要是值类型和引用类型的区别,但实际上如果使用不当是非常要命的.从Win32时代过来的人对于struct一点不感觉陌生,但是却反而忽略了一些基本问题 ...
- Swift Struct 结构体
前言 Swift 语言有两种基本的数据类型,即类(class)和结构体(struct),class 这样的概念大家不会陌生,而 struct 也并不是什么新的概念,在 Objective-C 和 C ...
- go struct结构体
struct结构体 用来自定义复杂数据结构 struct里面可以包含多个字段(属性),字段可以是任意类型 struct类型可以定义方法,注意和函数的区分 struct类型是值类型 struct类型可以 ...
- struct 结构体解析(原)
(一)基本概念 结构体是一个或是多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组合在一个名字之下.我们将关键字struct引入了结构声明中.结构声明包含在花括号内的一系列声明组成 ...
- 3.11 Go Struct结构体
3.11 Go Struct结构体 Golang支持OOP面向对象编程. Go的结构体struct如同python的class. Go基于struct实现OOP特性,只有组合composition这个 ...
随机推荐
- 使用morphia实现对mongodb的聚合查询
morphia是谷歌的一个针对mongodb的数据化持久框架: 关于mongodb的介绍不在这里展示,直接进入主题:采用morphia实现对mongodb的聚合查询 这里获取所有学生的分数总和 spr ...
- 由DB2分页想到的,关于JDBC ResultSet 处理大数据量
最近在处理DB2 ,查询中,发现如下问题.如果一个查询 count(*),有几十万行,分页如何实现 select row_number() over (order by fid desc ) as r ...
- Git——github基本操作
基本概念 上一篇文章写到git共享仓库,但是有个局限性,就是这个仓库存在于本地,其他人无法从我们这个仓库拿到共享的内容 但是我们可以将这个共享仓库放入一个远程的服务器上,然后设置一些登录权限就能完美的 ...
- 字符编码方式ASCII、Unicode、UTF-8
一.ASCII 1.介绍 即American Standard Code for Information Interchange(美国信息交换标准代码),是基于拉丁字母的,主要用于显示现代英语和其他西 ...
- HDU_1175_连连看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1175 大意:连连看规则,只能转两次弯,先输入矩阵0表示没有棋子,正整数表示不同的棋子,然后询问,输入两点坐 ...
- JavaScipt30(第一个案例)(主要知识点:键盘事件以及transitionend)
今天得到一个github练习项目,是30个原生js写成的小例子,麻雀虽小五脏俱全,现在记录一下第一个. 第一个是键盘按键时页面上对应的键高亮,同时播放音频,松开后不再高亮. 我自己实现了一下,然后查看 ...
- Linux(Centos7)下搭建SVN服务器(新手上路)
以前都是别人直接给地址在svn上,下载或者上传东西,如今要自己建一个版本库用来存放东西.1.安装svnyum install -y subversion 2.查看svn安装位置还有哪些文件rpm -q ...
- 去重 取最大的一条sql
select T.BILL_CODE,t.SCAN_TYPE,t.PIECE,SCAN_SITE,SCAN_MAN, row_number() over(partition by t.bill_cod ...
- Script:shell脚本生成随机字符串
#!/bin/bash # bash generate random alphanumeric string # # bash generate random character alphanumer ...
- <MyBatis>入门四 传入的参数处理
1.单个参数 传入单个参数时,mapper文件中 #{}里可以写任意值 /** * 传入单个参数 */ Employee getEmpById(Integer id); <!--单个参数 #{} ...