typedef和#define

typedef:在计算机编程语言中用来为复杂的声明定义简单的别名(给类型起别名,整体类型替换),与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中,定义变量语法,有typedef表示定义的是类型的名字,没有typedef表示定义的是变量.

格式: typedef char *String; //给指针类型char *起别名为String(右边替换左边)

String s1,s2;  //   typedef s1,s2  定义了两个char类型的指针s1,s2

#define:宏定义又称为宏代换、宏替换,简称“宏”.

格式: #define String char * ;//将代码里面的所有String都转换成char *

String s1,s2;  //#define  定义了 一个char类型的指针s1,以及char类型的变量s2

预处理指令分3钟,宏定义,条件编译,文件包含, 所有的预处理指令都是以#开头,预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,可以用#undef取消宏定义的作用,宏名一般用大写或者以k开头,变量名一般用小写

typedef与指向结构体的指针

语法格式:typedef 结构体 别名

// 定义一个结构体并起别名
typedef struct {
    float x;
    float y;
} Point;

// 定义了一个Point类型的指针并起起别名pp
typedef Point *PP;

int main()
{
    // 定义结构体变量

Point point = {10, 20};/此处相当于下面代码

//struct {
    float x;

float y;

} point = {10, 20};

// 定义指针变量

PP p = &point;//此处相当于下面代码

// Point *P = &point;

// 利用指针变量访问结构体成员
    printf("x=%f,y=%f\n", p->x, p->y);
    return 0;

}

typedef与指向函数的指针

格式:typedef 指针类型(*指针别名)(接受参数类型)

// 定义一个sum函数,计算a跟b的和
int sum(int a, int b) {
    int c = a + b;
    printf("%d + %d = %d", a, b, c);
    return c;
}

typedef int (*MySum)(int, int);

int main() {
    // 定义一个指向sum函数的指针变量p
    MySum p = sum;
   
    // 利用指针变量p调用sum函数
    (*p)(4, 5);
   
    return 0;

}

时间: 2024-10-23 09:04:45

typedef和#define的相关文章

typedef和define具体的详细区别

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef spec

typedef与#define的区别

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

typedef和define,const,struct和typedef struct

先看几个例子 (1) struct{ int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了. (2) struct test {int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了. 与 1 比,省写 了 test (3) typedef struct test {int x; int y; }text1,text2; 只说了 这种结构 的(类型

c++ typedef和define

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如:#define pi 3.1415926程序中的:area=pi*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifi

typedef与define 傻傻的分不清楚

今天看到 typedef与define的区别 上网搜了一下 总结一下 大部分内容出自百度知道,自己理解后又添了点.如发现不对,留言,大家一起研究一下 typedef int * pint ; #define PINT int * 那么: const pint p ;//p不可更改,但p指向的内容可更改 const PINT p ;//p可更改,但是p指向的内容不可更改.1.#define傻子一样的替换:#define 是宏命令,在编译前,由预处理器做替代,如同文本编辑的替代命令,把程序中的所有遇

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的区别——————【Badboy】

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

Typedef和#define之间的区别

Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同. 1. 首先,二者执行时间不同 关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能. Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查. #define用法例子: #define f(x) x*xmain( ){ int a=6,b=2,c: c=f(a) / f(b): printf("%d //n",c):}

typedef 与 define 的区别

1.区别 (1)定义.执行时间.作用域 定义.执行时间: #define pchar char * typedef char *pchar;     定义的格式差别,显而易见的,要注意,define 是不能存在分号的(文本替换),而typedef 是存在逗号的(类型的重命名).     同时,define 由预处理器进行处理,只做简单的文本替换的工作,不做任何检查(正确性检查.作用域检查.类型检查) typedef 是给一个已经存在类型的别名,在编译时候处理. 作用域:     define 只