打印
[DSP编程]

再论typedef

[复制链接]
558|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-10-27 17:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;  

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1820

帖子

18

粉丝