• 再论typedef



    1、C语言中的2种类型:内建类型和用户自定义类型
    (1)内建类型:ADT、自定义类型:UDT
    2、typedef定义(或者叫重命名)类型而不是变量
    (1)类型是一个数据模板,变量是一个实在的数据。类型是不占内存的,而变量是占内存的。
    (2)面向对象的语言中:类型就是类class,变量就是对象。
    3、typedef与#define的区别
    typedef char *pChar;
    #define pChar char *
    4、结构体定义的方法
    第一种:struct student
      {
       char name[20];
       int age;
      };
     使用的时候:
         struct student s1;   //struct student是类型;s1是变量
      s1.age = 20;
    第二种:struct student
      {
       char name[20];
       int age;
      }student_t;
     使用的时候:
         student_t s1;
      s1.age = 20;
     或者是定义结构体指针:
         struct student *pS1;    //结构体指针
      student_t *pS1;    //结构体指针
    第三种:typedef struct student
      {
       char name[20];
       int age;
      }student, *pStudent;
     一次定义了两个类型:
      第一个是结构体类型:有两个名字:struct student,student;
      第二个是结构体指针类型:有两个名字:struct student *,pStudent;
    5、typedef与结构体
    (1)结构体在使用时都是先定义结构体类型,再用结构体类型去定义变量。
    (2)C语言语法规定:结构体类型使用时必须是struct 结构体类型名 结构体变量名;这样的方式来定义变量。
    (3)使用typedef一次定义两个类型,分别是结构体变量类型,和结构体变量指针类型。
    6、typedef与const
    (1)typedef int *PINT;  const PINT p2;  相当于int *const p2;//*p2是可以修改的,但是p2改不了
    (2)typedef int *PINT;  PINT const p2;  相当于int *const p2;
    (3)如果想得到const int *p;这种效果,只能是typedef const int *CPINT;CPINT p1;
    7、使用typedef的意义
    (1)简化类型的描述
    char *(*)(char *, char *);     typedef char *(*pFunc)(char *, char *);
    (2)很多编程体系下,人们倾向于不使用int、double等C语言内建类型,因为这些类型本身和平台是相关的(譬如int类
    型在16位机器上时16位的,在32位机器上就是32位的)。为了解决这个问题,很多程序使用自定义的中间类型来做缓冲。
    譬如Linux内核中使用了这种技术,内核中先定义:typedef int size_t;然后在特定的编码需要下用size_t来替代int。
    (3)STM32的库中全部使用了自定义类型,譬如typedef volatile unsigned int vu32;  
     

  • 相关阅读:
    13种常用按钮、文本框、表单等CSS样式
    独家:深度介绍Linux内核是如何工作的
    查看chrome 已有插件
    Oracle双机冗余实战
    战争地带2100(Warzone 2100)
    Elive 1.9.24 (Unstable)发布
    使用 Vagrant+Docker 构建 PHP 最优开发环境
    基于socketio实现微信聊天功能
    MySQL的查询需要遍历几次B+树,理论上需要几次磁盘I/O?
    马蜂窝裁php换java,php又又又凉凉了吗
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11387850.html
Copyright © 2020-2023  润新知