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的四个用法 用法一: 为复杂的声明定义一个新的简单的别名.方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版.举例 ...
随机推荐
- Git-基本操作(同SVN)
本人拜读了廖雪峰老师关于Git的讲述后整理所得 1.创建版本库: 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删 ...
- Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E Underground Lab
地址:http://codeforces.com/contest/782/problem/E 题目: E. Underground Lab time limit per test 1 second m ...
- Scala快速排序
Scala 快排 Scala 基本思想:经过一趟排序,把待排对象分成两个独立的部分,一部分的数据大(小)于另一部分,同理,对子对象进行如此处理,以达到所有数据都有序. package studen ...
- quic协议实践
QUIC实践 环境Ubuntu14.x86_64 gcc4.8 python2.7 编译QUIC服务器和客户端 下载 git clone https://github.com/google/proto ...
- python 内建函数isinstance的用法以及与type的区别
isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数object是classinfo的实例,或者object是class ...
- Android利用方向传感器获得手机的相对角度实例说明
http://www.jb51.net/article/37710.htm 1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较 ...
- 4.9版本的linux内核中实时时钟芯片pt7c4338的驱动源码在哪里
答:drivers/rtc/rtc-ds1307.c,内核配置项为CONFIG_RTC_DRV_DS1307 Location: -> Device Drivers -> Real Tim ...
- asm-3.3.1.jar详解 (转)
Java字节码操纵框架.它可以直接以二进制形式动态地生成stub类或其他代理类,或者在装载时动态地修改类.ASM提供类似于BCEL和SERP之类的工具包的功能,但是被设计得更小巧.更快速,这使它适用于 ...
- iOS开发进阶 - 项目的本地化处理(多语言开发)
移动端访问不佳,请访问我的个人博客 最近项目本地化,需要支持多国语言,下面将本地化的步骤记录下来,方便查找使用,步骤很简单,有些地方也有坑,希望大家看后少走弯路~~ 什么是本地化 本地化说直白点就是多 ...
- PHP的memory_limit引起的问题
在运行PHP程序,通常会遇到下面的错误, 这个意味着PHP脚本使用了过多的内存,并超出了系统对其设置的允许最大内存.解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可 ...