C++进阶2. typedef用法
C++ 中的typedef用法 20131011
Typedef在C++中是一个关键字,他的用法有多重,但是自己又说不全面,所以整理一下:
1.用类型的别名
typedef char* PChar; 这里就是使用PChar 代替程序中的char*,在编写程序的时候PChar a 等价于char * a;
不知指针, 如 typedef int INT4;
2.为结构体的别名
typedef struct test1{
char a;
int b;
}Test;
也就是Test 等价于struct test1
使用的时候我们使用 Test a;等价于 struct test1 a;
编程的时候,因为Java的原因,对于程序的内存有点混乱,
Test t1; t1.a = 100;
Test t2; t2 = t1; t2.a = 99; 其实这里的复制已经是两个对象,而不是同一个对象。
但是在Java中,不是这个样子的,因为所有的对象都是保存在堆中的,名字只是一个指向堆中对象的引用。
class Test{
int a;
Test(){}
Test(Test t){
this.a = t.a;
}
}
public class TestMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t1 = new Test();
t1.a = 10;
Test t2 = t1;
t2.a = 19;
Test t3 = new Test(t1);
t3.a = 199;
System.out.println(t1.a ); //19
System.out.println(t2.a );//19
System.out.println(t3.a );//199
}
}
3.通过别名实现平台的兼容性
如定义REAL类型数据,但是不同的平台上可能不支持double long double 等等,我们在程序中同意使用REAL,在程序中修该typedef 为支持的数据类型,而不用修改代码。
4.为复杂的函数指针或者类型去一个简单的名字
typedef int (* PFun) (int* p);
这表示的是一个函数指针,返回值是int类型的,并且参数是 int* 的函数指针。我们在程序中如果需要使用到这种类型的函数指针。
int (* pfun1) (int* p);
int (* pfun2) (int* p);
简单的写法 PFunc pfun1, pfun2;即可。
追梦的飞飞
于广州中山大学 20131011
HomePage: http://yangtengfei.duapp.com
C++进阶2. typedef用法的更多相关文章
- C++ typedef用法小结 (※不能不看※)
C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...
- [转载] C++ typedef 用法详解
typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...
- typedef用法小结
typedef用法小结- - 注意:本文转自网络,版权归原作者所有. typedef typedef用法小结- - 这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等 ...
- c++ --> typedef用法总结
typedef用法总结 一.四大用途 用途1 定义类型别名,在大量使用指针的地方,typedef更方便 typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // ...
- [C++]typedef用法
参考:C/C++ typedef用法详解(真的很详细) 四个用途 定义一种类型的别名,而不是简单的宏替换 定义struct新对象的别名 定义和平台无关的类型 为复杂声明定义一个简单的别名 typede ...
- (转)typedef用法
Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法.不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮 ...
- js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据)
js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据) 一.总结 1.ajax的浏览器的window对象的XMLHtmlRequest对象的两个重要方法:open(),se ...
- C语言中typedef用法
C语言中typedef用法 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等) ...
- C++ typedef用法小结
一.typedef的四个用法 用法一: 为复杂的声明定义一个新的简单的别名.方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版.举例 ...
随机推荐
- 31. Next Permutation (下一个全排列)
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- CentOS 相关软件安装 与 Siege压测
1.登录linux机器 a.打开mac的钥匙串 b.ssl root@ip c.输入密码 常用命令: cat /proc/version 查看系统版本 cat /etc/issue control ...
- Ubuntu16.04安装MySQLdb
buntu 系统下进行的操作 首先安装了pip工具 1 sudo apt-get install python-pip 然后使用 1 sudo pip install mysql-python 安 ...
- oracle中自定义type、以及java中传递list到过程中的例子
在java开发过程中有时候为了处理数据的速度更快,会把要处理的数据组装成list,把list作为过程的一个参数,在过程中批量处理,下面就以一个例子做简单的阐述,以此谨记. --药品目录智能审核 --说 ...
- PreparedStatement和Statement区别详解
技术原理 该 PreparedStatement接口继承Statement,并与之在两方面有所不同: PreparedStatement 实例包含已编译的 SQL 语句.这就是使语句“准备好”.包含于 ...
- 【caffe】用训练好的imagenet模型分类图像
因为毕设需要,我首先是用ffmpeg抽取某个宠物视频的关键帧,然后用caffe对这个关键帧中的物体进行分类. 1.抽取关键帧的命令: E:\graduation design\FFMPEG\bin&g ...
- STM32-串行SPI nor
源:FLASH 存储学习-串行SPI nor 1.1 SST25VF080B简介1.1.1 主要特性 关键点:容量.速度(时钟速度.读写速度).功耗. l 容量:8MBit: l 最高SPI时钟频率: ...
- idea Jetty deployment
idea 配置好jetty server后,先执行此操作 mvn install(该操作后才会有war包,jar包之类的),再debug或run之类的操作,不然一直404
- 20145310《Java程序设计》第5次实验报告
20145310<Java程序设计>第5次实验报告 实验要求 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验内容 根据所学内容,编写代码实现服务器与客户端 掌 ...
- 20135320赵瀚青LINUX第十八章读书笔记
概述:调试工作艰难是内核级开发区别于用户级开发的一个显著特点 18.1准备开始 内核调试往往是一个令人挠头不已的漫长过程.幸运的是,在这些费劲的问题中也有不少比较简单而且容易消灭的小bug,运气好你可 ...