zoukankan      html  css  js  c++  java
  • 再论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;  
     

  • 相关阅读:
    localhost 和 127.0.0.1 认识
    postgreSQL可视化工具pgAdmin3 导入表结构和数据
    posgreSQL安装失败解决方案
    C#面向对象基本概念总结
    关于数据存储(关系型数据库和非关系型数据库)
    ADO.NET中的五大内置对象
    关于XML
    WPF中TreeView控件SelectedItemChanged方法的MVVM绑定
    WPF中使用MVVM进行multibinding
    WPF中TreeView控件数据绑定和后台动态添加数据(二)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11387850.html
Copyright © 2011-2022 走看看