总结一下typedef和#define的区别 1.概念 #define 它在编译预处理时进行简单的替换,不作正确性检查。它是预处理指令。 ...typedef 它在自己的作用域内给一个已经存在的类型一个别名。它是在是在编译时处理的。 ...: typedef double D;//就是给double起一个别名D D val;//相当于是double val //用dypedef定义数组 typedef double arr[3];/...fun是一个指向 void类型的指针函数 void StrGet() { qDebug()<<"str"; } fun f1=StrGet; f1(); 2.区别 执行时间不一样 ...#define 是在预处理阶段,也就是在编译之前进行替换工作 typedef 是在编译阶段,会进行类型检查 作用域不同 #define 无论在哪定义过,在其它的地都可以使用 typedef
在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define、const以及typedef。那么它们之间有什么区别呢?我们接下来一个一个具体了解下。...constString1地址不能修改,constString1值能修改 const NSString *constString1 = @"I am a const NSString * string"; //意义同上,无区别...值不能修改 NSString * const stringConst = @"I am a NSString * const string"; constString1 跟constString2 无区别...开发中最常用到的应该就是使用typedef定义枚举和block了,此外还可以用typedef定义函数。...(){ MyMethod m = add; m(5,6); //调用函数 return 0; } 二、区别 2.1 #define与const 宏在预编译时处理(宏在编译开始之前就会被替换
typedef typedef是在C语言中用来为复杂的声明定义简单的别名,它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中...typedef取别名的一般形式为: typedef 旧名字 新名字 define与typedef的区别 (1)#define之后不带分号,typedef之后带分号。...(2)#define可以使用其他类型说明符对宏类型名进行扩展,而 typedef 不能这样做。...下面看一个关于typedef的重要的问题!!...const pStr p2和pStr const p2本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。
宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符进行重新命令。被命名的标识符具有类型定义说明的功能。...#include #include #define PIN1 char* typedef char* PIN2; int main() { //使用#define...相当于:char* x, y;就是说x是char指针类型,而y是char类型 PIN1 x, y; //使用typedef相当于:char* x, char* y;就是说x是char指针类型...也是char指针类型 PIN2 a, b; printf("By #define :%d %d\n\n", sizeof(x), sizeof(y)); printf("By typedef
c语言中typedef和define的区别 1、typedef仅限于为类型定义符号名称。define不仅可以为类型定义别名,还可以为数值定义别名。 例如,可以将1定义为ONE。...2、typedef由编译器解释,define语句由预编译器处理。...{ printf( "TRUE 的值: %d\n", TRUE); printf( "FALSE 的值: %d\n", FALSE); return 0; } 以上就是c语言中typedef...和define的区别,希望对大家有所帮助。
今天我们聊点点的知识点typedef & using。 C语言支持类型别名typedef,显然,CPP也支持咯。...创建类型别名 typedef和using都可以创建类型别名,区别是在语法语义上的不同。...typedef的语法如下: typedef [original-type] [alias]; 用法如下: typedef int MyInt; typedef std::map<std::string...也就是说到目前为止,看起来 typedef 和用法是相同的,但存在即合理,对using的引入肯定有其他原因,这就引入了typedef和using在模板别名上的不同。...当然可以,但是相对于using,typedef创建模板类型别名会麻烦很大。
为数据类型取别名 1 #include 2 3 typedef int i; //为int再重新多取一个名字,i等价于int 4 5 typedef struct student.../等价于ST st; 13 struct student *ps;//等价于ST *ps; 14 return 0; 15 } 1 #include 2 3 typedef
起别名 起了别名,别老是int,int的,让人看不明白 例子 // 起了别名,别老是int,int的,让人看不明白 typedef int size; void measure(size*psz);...函数指针 使用示例: #include typedef void (*FUNC)(); void f() { printf("hello"); } int main() {...数组 #include typedef char Line[81]; int main(void) { Line text; } 博主昵称:一拳必胜客 有所参考,有所借鉴,
isPropertyAvailable和isNotEmpty 这个两个属性非常有用
(区别请看另一篇博文:const char*, char const*, char*const的区别 )原因在于const给予了整个指针本身以常量性,也就是形成了常量指针char* const。...简单来说,记住当const和typedef一起出现时,typedef不会是简单的字符串替换就行。...第三、typedef 与 #define的区别案例一:通常讲,typedef要比#define要好,特别是在有指针的场合。...const pStr p2和const long x本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。...不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。typedef 声明,简称 typedef,为现有类型创建一个新的名字。
众所周知,typedef与#define都可以将系统关键字定义为一个其他名字来使用,方便我们记忆,比如 #define PCHAR char* 与 typedef char* PCHAR;,两种方式定义出来的...#define自定义的名字我们成为“宏”,而typedef自定义的名字我们称为真正的别名。宏是在预编译期间的一个简单的替换操作,而typedef则并非是简单的替换。...通过一个例子我们就可以清晰的发现两者的区别。...一段既有#define也有typedef的代码: #define DPCHAR char* typedef char* TPCHAR; int main(int argc, char* argv[])...但 typedef 定义的别名则不然,p3和p4均是一个char*类型的指针。
在嵌入式开发中经常会用到宏定义define和typedef,它们俩在使用上有些类似,容易混淆,那么他们有什么区别呢? 1....typedef是C语言中的关键字,他的作用是为复杂的声明定义起一个别名,比如在STM32开发中,我们经常可以看到诸如uint32_t这类自定义数据类型,这个数据类型就是通过typedef实现的: typedef...unsigned int uint32_t; /*语句结束要加;*/ typedef更常见的是为结构等复杂数据类型起别名,以达到定义相关变量时更加方便的目的。...二者的区别 举例说明名二者的本质区别: #define my_type1_t (int *) typedef int* my_type2_t; /*用两个数据类型分别定义变量*/ my_type1_t
问题 C++ 中下面的两条语句有什么区别么?...struct Foo { ... }; typedef struct { ... } Foo; 回答 在 C++ 中只有一点点区别,主要来自于 C 语言。...但每次都加 struct Foo 太繁琐了,所以可以加个 typedef 来声明别名,这个别名就是普通标识符,定义在普通作用域(也因此 typedef struct Foo { ... } Foo 不会有问题...struct Foo { ... }; typedef struct Foo Foo; Foo x; 注意,typedef 的别名不能在另一个文件通过前置声明来使用,只能通过 #include,因为...两者的区别就是后者无法被前置声明。 待补充…
在 C++11 中下面的两条语句表达的都是一个意思, typedef int MyInt; using MyInt = int; 同时 using 还可在模板中使用, emplate...using MyType = AnotherType; typedef 和 using 除了 using 还可以在模板中使用,其它的都是等同的。
typedef和#define的用法与区别 一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:...typedef int INT; typedef int ARRAY[10]; typedef (int*) pINT; typedef可以增强程序的可读性...三、typedef与#define的区别 从以上的概念便也能基本清楚,typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量 ,到了C++,const...有时很容易搞不清楚与typedef两者到底该用哪个好,如#define INT int这样的语句,用typedef一样可以完成,用哪个好呢?...简单来说,记住当const和typedef一起出现时,typedef不会是简单的字符串替换就行。
C语言typedef用新的类型名代替原有的类型名 //指定用Integer为类型名,作用与int相同。 typedef int Integer; //指定用Real为类型名,作用与float相同。...typedef float Real; C语言允许程序设计者用一个简单的名字代替复杂的类型形式 命名一个新的类型名代表结构体类型 typedef struct { int month;...int day; int year; }Date; 命名一个新的类型名代表数据类型 typedef int Num[100]; //声明Num为整型数组类型名 命名一个新的类型名代表指针类型 typedef...char *String; //声明String为字符指针类型 String p,s[10]; //定义p为字符指针变量,s为字符指针数组 命名一个新的类型名代表指向函数的指针类型 typedef...在C语言中,常把typedef声明的类型名的第1个字母用大写表示,以便与系统提供的标准类型标识符相区别。
1 typedef int ElemType; 为什么呀,我倒是知道后面用ElemType定义别的数据类型,看起来是把ElemType和int一样啦,那直接用int不用行了,为什么要用ElemType...而且一旦你需要将类型变换比如使用double型的了,只要写: typedef double ElemType; 一下子就全改了,如果没有定义的话就要一个个的把int改成double,你不嫌麻烦么 2...typedef int(*CallBack)(char *p);这个太难理解了,怎么理解呢?...typedef int a 这个我就知道是什么意思,就是把a还代替int,请问 typedef int(*CallBack)(char *p), 这个又是什么意思呢?...typedef int(*CallBack)(char *p); 变量名:CallBack 1.*CallBack:CallBack是一个指针 2.(*CallBack)():指向一个函数 3.
C语言typedef用新的类型名代替原有的类型名 //指定用Integer为类型名,作用与int相同。 typedef int Integer; //指定用Real为类型名,作用与float相同。...typedef float Real; C语言允许程序设计者用一个简单的名字代替复杂的类型形式 命名一个新的类型名代表结构体类型 typedef struct { int month; ...int day; int year; }Date; 命名一个新的类型名代表数据类型 typedef int Num[100]; //声明Num为整型数组类型名 命名一个新的类型名代表指针类型 typedef...char *String; //声明String为字符指针类型 String p,s[10]; //定义p为字符指针变量,s为字符指针数组 命名一个新的类型名代表指向函数的指针类型 typedef...在C语言中,常把typedef声明的类型名的第1个字母用大写表示,以便与系统提供的标准类型标识符相区别。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。...请你先猜想一下,然后看下文说明: typedef struct tagNode { char *pItem; pNode pNext; } *pNode; 答案与分析: 1、typedef...2、 typedef与结构结合使用 typedef struct tagMyStruct { int iNum; long lLength; } MyStruct; 这语句实际上完成两个操作:...的话,又会造成区别: struct Student { int a; }stu1;//stu1是一个变量...}aaa; typedef aaa bbb; typedef aaa ccc; 也就是说aaa,bbb,ccc三者都是结构体类型。
C++用typedef声明类型 C++除了可以声明结构体、共用体、枚举等类型外,还可以用typedef声明一个新的类型名来代替已有的类型名。...C++也可以用typedef 声明结构体类型: typedef struct//在struct之前用了关键字typedef,表示是声明新名 { int year; int month; int day...将变量名换成新类型名 在最前面加typedef。 用新类型名去定义变量。 C++typedef声明需要注意以下几点; typedef可以声明各种类型名,但不能用来定义变量。...使用typedef有利于程序的通用与移植。 案例:C++使用typedef。...C++typedef声明 更多案例可以公众号:C语言入门到精通
领取专属 10元无门槛券
手把手带您无忧上云