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; ...
随机推荐
- oracle Date format日期和月份不补0
格式化日期,日,月只有一位小数的只显示一位,不自动加0,在dd/mm 前面加上fm即可去掉前面的0 如:select to_char(t,'YYYY/fmMM/fmDD') from testdata ...
- ubuntu14.04 搭建samba
1.安装软件 sudo apt-get remove libwbclient0 sudo apt-get remove samba-common sudo apt ...
- the swap trick用于锐减过剩容量
1.由于vector的复制构造函数只为被复制的vector分配它所需要的空间,故可以用如下的方式来削减vector v中过剩的容量:vector<int>(v).swap(v) 2.the ...
- Gym - 101845K 排序+概率
The UNAL programming coaches have lost a bet, they bet the 6 UNAL teams would occupy the first six p ...
- 7.Palindrome Linked List(回文链表)
Level: Easy 题目描述: Given a singly linked list, determine if it is a palindrome. Example 1: Input: ...
- SSKeychain的使用 钥匙串
一.首先要理解keychain与userdefaults的区别: 1.keychain是将数据加密后存储在本地,更安全.路径:Library/Application Support/iPhone Si ...
- Nginx 基本 安装..
ubuntu 下 Nginx是高度自由化的Web服务器,它的功能是由许多模块来支持.如果使用了某个模块,这个模块使用了一些类似zlib或OpenSSL等的第三方库,那么就必须先安装这些软件.Ubunt ...
- day22 正则表达式 re
1. 正则表达式 正则表达式是对字符串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤. 工具: 各大文本编辑器⼀般都有正则匹配功能. 我们也可以去http://tool.china ...
- POI 读大文件日志
POI的三个目录 usermodel 包含很多类,方便用户使用,但是占用内存大 eventusermodel 使用xml的SAX事件解析,XSSFReader创建时必须使用OPCPackage,pkg ...
- 配置sudo访问
具体操作步骤 1.首先我们建立一个账户,设置密码 [root@VM_0_13_centos home]# useradd 123 [root@VM_0_13_centos home]# passwd ...