c语言声明的解读、typedef与define的区别

读声明:

1.最先从左往右找到最左边的标识符。

2.查看标识符右边的下一个符号。若是方括号,则表示到“...的数组”。

3.如果是一个左圆括号。到右括号为止的内容表示“返回...的函数”。

4.再往右找,如果左边的符号是一个左括号, 这个左括号把已处理的部分声明组合在一起,直到遇见对应的右括号,然后从第二步重新开始。

5.如果是*,表示“指向...的指针”; 如果是const,表示“只读”; 如果是volatile,表示“volatile”;

6.剩下的符号可一并阅读。

练习例子:char * const *(*next)();

//===================typedef与define的区别=======================//

typedef为现有类型取了一个别名,而没有引入新类型。typedef可以看成是一种彻底的封装,不能往里面再增加别的东西。

typedef看上去以及读的方式跟变量声明是一样的。

typedef在简洁的表示指向其他东西的指针方面作用比较大。(如函数指针)

不能把typedef嵌入到声明中的中间部分。

#define是宏文本替换  #define 宏名 宏体  (可以有带参数的宏定义如 #define f(a, b) a+b>c)

typedef与宏文本的区别:

1.可以用其他类型说明符对宏类型名进行扩展。但对typedef所定义的类型名却不能。

  如:#define peach int                   unsigned peach i;//成立

    #typedef int banana                  unsigned banana i;//不成立

2.在连续几个变量声明中,用typedef定义的类型可以保证声明中所有的变量是同一类型,用#define定义的类型则无法保证。

  如:#define peach int *                      peach  i,j;//其中i是int指针而j是int类型。

    #typedef int * banana                      banana i,j; //i,j 都是int指针。

c语言声明的解读、typedef与define的区别

时间: 2024-08-06 13:06:46

c语言声明的解读、typedef与define的区别的相关文章

typedef和#define的区别——————【Badboy】

typedef 和#define 都常用来定义一个标识符及关键字的别名,但他们之间有关键的区别. typedef 是语言编译过程的一部分; #define是宏定义语句,它本身并不在编译过程中进行,而是在这之前的预处理过程就已经完成了. 要理解两者的关键区别,可以这么来考虑 : 把typedef 看成是一种彻底的"封装"类型,相当于产生了一个新的变量类型(这点与struct 类似,待会会与struct 进行类比来增进理解).而#define 仅仅是进行宏文本替换. typedef 和 #

typedef 与define 的区别

typedef和#define的用法与区别 typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: typedef    int       INT;typedef    int       ARRAY[10];typedef   (int*)   pINT; typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点. 二.#

typedef和define的区别

在使用C语言或者C++开发中,我们离不开typedef和define的使用,typedef相当于我们重新定义了一种类型,而define则只是简单的替换,这里我们简单归总一下二者的差别. 首先,我们可以用其他类型说明符对宏类型名进行扩展,但是对typedef的类型名不能扩展,比如 #define  demo   char 我们可以定义unsigned demo c;完全没问题,但是对于typedef char  demo我们却不能定义成unsigned demo c; 其次,在连续几个变量的声明中

typedef与#define的区别

1.  typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名.typedef的作用主要有两点: 1.1  简化复杂的类型声明 简化复杂的类型声明,或给已有类型起一含义明确的别名:如: typedef bool (*FuncPointer)(int, double); //声明了一个返回 bool 类型并带有两个(int和double)形参的函数的指针

typedef 和define的区别

typedef 和define的区别 总结一下typedef和#define的区别 1.概念 #define 它在编译预处理时进行简单的替换,不作正确性检查.它是预处理指令. typedef 它在自己的作用域内给一个已经存在的类型一个别名.它是在是在编译时处理的. 例子: #define: #define DO double DO val =5;//相当于 double va =5; #define FUN(X) X+5 int va = FUN(3); //相当于 va = 3+5 typed

typedef 和 define的区别

类型取别名,还可以定义常量.变量.编译开关 都知道两个在某些情况下是相同的 但是define是在预编译时就会处理掉,进行简单的宏替换,不管正不正确都替换掉,末尾没有分号,有分号连分号也一起替换了. 而typedef则是在已经定义的类型中进行别名的定义. typedef有作用域,define只要是在定义之后,均可以使用 typedef不仅可以定义系统自带的类型,还可以定义用户自定义的类型结构,define的用途在于定义类型取别名,还可以定义常量.变量.编译开关 经典问题: const pint p

C语言:typedef 跟 define 的区别

typedef (int*) pINT1;以及下面这行:#define pINT2 int* pINT1 a,b; 与pINT2 a,b; 定义的a,b 有差别吗 回答: typedef作为类型定义关键字,用于在原有数据类型(包括基本类型.构造类型和指针等)的基础上,由用户自定义新的类型名称. 在编程中使用typedef的好处,除了为变量取一个简单易记且意义明确的新名称之外,还可以简化一些比较复杂的类型声明.比如: #define 像是移花接木  pINT2 a,b 就应该是   int *a,

typedef与define的区别与联系

在C或者C++中,可以通过使用typedef和define来声明新的类型来代替已有的类型.例如: typedef int COUNT; #define COUNT int; 两者的作用都是用COUNT来代表int.虽然两者实现的功能相同,但是实际上却又有很大的差别,要不然也不会同时存在了.下面简单谈一下两者的区别,希望在用到时能够正确的进行选择,以便减少不必要的麻烦: typedef 在C或者C++中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内

C语言中的typedef跟define的区别

今天用C语言练习时涉及到了typedef和define的使用问题,那么他们的区别是啥?这种情况下为什么要用typedef?哪种情况下为什么要用define呢? 学习C的时候的你是否考虑过这个问题呢? 今天我决定梳理一下,以备后用. 相同点: 1.都可以给变量起别名 不同点: 1.define定义后可以扩展,而typedef则不可以. 1 //定义完一个整型的数据后补充定义为无符号的 2 3 #define zhengxing int 4 unsigned zhengxing;//正确 5 6 t