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用法的更多相关文章

  1. C++ typedef用法小结 (※不能不看※)

    C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...

  2. [转载] C++ typedef 用法详解

    typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...

  3. typedef用法小结

    typedef用法小结- - 注意:本文转自网络,版权归原作者所有. typedef typedef用法小结- - 这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等 ...

  4. c++ --> typedef用法总结

    typedef用法总结 一.四大用途 用途1  定义类型别名,在大量使用指针的地方,typedef更方便 typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // ...

  5. [C++]typedef用法

    参考:C/C++ typedef用法详解(真的很详细) 四个用途 定义一种类型的别名,而不是简单的宏替换 定义struct新对象的别名 定义和平台无关的类型 为复杂声明定义一个简单的别名 typede ...

  6. (转)typedef用法

    Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法.不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮 ...

  7. js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据)

    js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据) 一.总结 1.ajax的浏览器的window对象的XMLHtmlRequest对象的两个重要方法:open(),se ...

  8. C语言中typedef用法

    C语言中typedef用法 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等) ...

  9. C++ typedef用法小结

    一.typedef的四个用法 用法一: 为复杂的声明定义一个新的简单的别名.方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版.举例 ...

随机推荐

  1. Git-从远程仓库克隆

    本人拜读了廖雪峰老师关于Git的讲述后整理所得 上次我们讲了先有本地库,后有远程库的时候,如何关联远程库. 现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆. 首先,登陆Git ...

  2. BZOJ 2301 Problem b (莫比乌斯反演+容斥)

    这道题和 HDU-1695不同的是,a,c不一定是1了.还是莫比乌斯的套路,加上容斥求结果. 设\(F(n,m,k)\)为满足\(gcd(i,j)=k(1\leq i\leq n,1\leq j\le ...

  3. 性能调优之MySQL篇一:MySQL性能计数器

    计数器 计数器分析 Threads_connected 表示当前有多少个客户连接该mysql服务器,连接数是否过多,网络是否存在问题,它是动态变化的,当达到最大连接数时,数据库系统就不能提供更多的连接 ...

  4. TOSCA自动化测试工具安装

    1.下载链接 https://www.tricentis.com/software-testing-tools/ 2.免费试用14天, 弹出的页面输入邮箱地址--> 输入一堆信息-->点击 ...

  5. 前端使用canvas绘制立体三角形

    前端绘制立体效果的三角形的demo 在移动端使用时,需要自适应屏幕.canvas上无法设置rem,所以在canvas外加一个父级元素设置为rem,再将canvas的宽高设置为100% 100%. 如果 ...

  6. C++、Java、JavaScript中的正则表达式

    C++(VS2013编译器):http://msdn.microsoft.com/zh-cn/library/bb982727.aspx#grammarsummary Java:            ...

  7. Printf的缓冲机制

    转:https://blog.csdn.net/qq_25424545/article/details/78772959 今天用fork()写程序时候,突然发现自己对Printf的缓冲机制还是有些不够 ...

  8. 【MSDN_C#】C#版本介绍

    C# 1,Visual Studio .NET 2002 首次发布 C# 1.1,Visual Studio .NET 2003 #line 杂注和 xml 文档注释 C# 2,Visual Stud ...

  9. spring boot加mybatis使用Map返回时,当值为空时属性也会没有(转)

    使用spring boot加mybatis时,设置Map返回,当值为空时属性也会没有,就会报错 在application.properties中加入下面配置,将会解决这个问题.   #当查询数据为空时 ...

  10. 【前端】vue.js实现输入框绑定

    vue.js实现输入框绑定 实现效果如下: 实现代码及注释 <!DOCTYPE html> <html> <head> <title>vue.js数据动 ...