typedef struct 与 struct
学c++之前最好先学c。特别要说的是,一些虽然冠名为c++的项目的文件中却大部分都是c的代码。
比如我们这个例子:
在c语言中,定义一个结构体和其实适合c++中有区别的。比如我们有如下的代码:
struct Animal
{
float weight;
};
如果是c代码,要定义一个Animal对象,则需要这么写:
struct Animal a1;
而如果是c++大家都熟悉,struct Animal可以当做类似class Animal来使用。那么就是:
Animal a1;
明显可以看得出来,因为c不是面向对象的,所以它的语法在针对对象的时候也有些蹩脚。所以要专门的告诉编译器Animal是一个struct,不然编译器不知道。
但是每次都这样写自然非常麻烦切不美观。所以才有了typedef struct 原名 {结构体中的内容};别名; 这样的格式。
typedef struct Animal
{
float weight;
}Ani;
这样 Ani 就等价于 struct Animal。定义一个变量的时候就可以写成:
Ani a1;
最后说一下,不管是c代码还是c++代码,诸如 typedef struct 原名 {结构体中的内容};别名; 这样的格式 来声明结构体,在两种语言中的意义是相同的,也就是所谓的抹掉了两种语言之间的差别。此外还能保证这条语句是一个声明语句而非定义了对象。因此这样来声明结构体,在c/c++的程序中是非常值得推荐的。
typedef struct 与 struct的更多相关文章
- typedef struct与struct的区别
typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据 ...
- typedef struct与struct定义结构体
今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处: 结构也是一种数据类型, 能够使用结构变量, 因此, 象其他 类型的变量一样, 在使用结构变量时要先对其 ...
- 转:struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t; ...
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t; ...
- linux网络接口,struct ifreq struct ifconf结构
网络相关的ioctl请求的request参数及arg地址必须指向的数据类型如下表所示: 接口 SIOCGIFCONF SIOCSIFADDR SIOCGIFADDR SIOCSIFBRDADDR SI ...
- 结构体struct sockaddr_in, struct sockaddr,struct in_addr
一.结构体 struct sockaddr_in, struct sockaddr, struct in_addr struct sockaddr_in, struct sockaddr,str ...
- typedef 及其与struct的结合使用
//相当于为现有类型创建一个别名,或称类型别名. //整形等 typedef int size; //字符数组 ]; ];//=> typedef ]; Line text, secondlin ...
- [转载]typedef struct和struct的区别
typedef struct tagMyStruct { int iNum; long lLength; } MyStruct; 上面的tagMyStruct是标识符,MyStruct是变量类型(相 ...
- 关于 typedef struct 和 struct
举个例子说明:typedef struct abc{ int x; int y; int z;}ABC;是将结构体abc类型重新起个名字为ABC,以后再定义同一类型的变量时,可以写成:ABC m,n; ...
随机推荐
- Centos7安装MySQL8.0
请到这个地址看:https://www.cnblogs.com/kevingrace/p/10482469.html Centos7安装MySQL8.0 - 操作手册 一.yum安装方式: 卸载之前版 ...
- pytorch 检测图片中是否有人
照搬pytorch官方代码,只是将数据集换成了INRIAPerson数据集中的train和test文件夹. 贴下代码和效果,代码是官方的,就不详细解释了. # License: BSD # Autho ...
- P3768 简单的数学题(莫比乌斯反演)
[题目链接] https://www.luogu.org/problemnew/show/P3768 [题目描述] 求 \(\sum_{i=1}^{n}\sum_{j=1}^{n}i* j* gcd( ...
- BestCoder Round #66 1001
GTW likes math Accepts: 472 Submissions: 2140 Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- hdu3746 KMP-next数组的应用
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- mysql 安装以及卸载 CentOS 6.9
mysql官网下载地址:https://dev.mysql.com/downloads/mysql/ 本次操作系统是 阿里云服务器 CentOS 6.9 64位 下载得到tar 包: mysql ...
- 转 Celery 使用
http://www.mamicode.com/info-detail-1798782.html https://blog.csdn.net/lu1005287365/article/details/ ...
- swagger2使用日志
------------------------------------------------------------------------------------ 安装.配置.使用 参考:htt ...
- appium手机自动化环境搭建
在robotframework环境安装完成的基础上进行如下安装,如果没有安装rfs环境,请先参考robotframework安装文章:Robot Framework的环境搭建 文件下载地址:链接:ht ...
- 在ubuntu中安装mysql及简单操作方式
老规矩,ctrl+alt+t呼出终端, 输入 sudo apt-get update 更新源,否则在运行下面代码时会报出有几个包无法下载,你还是得回来执行这句代码, 输入 sudo apt-get i ...