define与typedef

    很多同学对define很熟,对typedef也很熟,但是当define和typedef相遇的时候,就犯迷糊了。那么,define和typedef到底是什么关系?它们之间的区别在哪里?它们各自的含义是什么呢?请看下文

    1、typedef  意思是重定义类型,它就相当于给较长的类型起一个简短的易懂的别名,但是并不是定义一个新的类型,就相当于在生活中你给你朋友起一个你认为好听又好记的小名,以后的称呼就是这个小名。typedef一般和struct在一块使用。例如,我们定义一个Student结构体,里面的成员有姓名、年龄、性别,则结构体定义为

         struct  Student

        {

              string name;

              int age;

              string sex;

         };

   这是最基本的定义结构体,当我们用这个结构体定义变量时,会写成struct  Student  s1。当使用了typedef以后,结构体定义就变成

        typedef struct Student

       {

             string name;

             int age;

             string sex;

       }Student;

     然后用结构体定义变量时 就可以写成Student s1。这个例子比较简单,用typedef前后的优势不明显。如果是用 unsigned  long long unit64这个类型定义一个变量的话,使用typedef就很容易了,直接就写成typedef unsigned  long long unit64;unit64  b=10;

    2、define的意思是字符替换,也相当于为类型取别名,同时还可以定义常量、变量等。例如#define  SIZE 10;int arr[SIZE];这时候就说明数组的长度为10

    3、区别

     (1)typedef定义的语句结尾有分号,而define定义的语句结束后没有分号。

     (2)对指针的操作中,二者修饰指针类型时,作用不同。

      例如:typedef int* Pint;

                 #define PINT int*

                 int i=1;  int j=2;

                 const Pint p1=&i;//p1可以更改,p1指向的内容可以更改,相当于int *const p1

                 const PINT p2=&j;//p2可以更改,p2指向的内容不能更改,相当于const int *p2


                 Pint d,e;//相当于int *d,int *e.两个变量都是int *类型

                 PINT f,h;//相当于int *f,h.只有一个是指针

                 int i=10;

                   d=&i;e=&i;f=&i;//因为d,e,f都是指针类型,所以可以保存变量的地址

                   h=i;//h是int类型,所以直接赋值



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值