首先看一下下面的两种定义,想想会有什么不同:
第一种定义:宏定义,以FU表示int*(在编译时就替换了)
#define FU int*
第二种定义:
typedef int* FU;
好了,应用以上的FU分别定义变量有什么区别呢?
FU i,j;
如果使用第一种定义,则 i 是一个int型指针。 j 仅仅是一个int型变量。
如果使用第二种定义,则 i 和 j都是一个int型指针。
比如如下代码:
typedef int* FU; int array[3]={1,2,3}; FU i,j; i=array; //i[1]的值为2,i是一个int型的指针 j=array; //j[1]的值为2,j是一个int型的指针
#define FU int* int array[3]={1,2,3}; FU i,j; i=array; //i[1]的值为2,i是一个int型的指针 j=array; //这样是非法的,因为j是一个int型变量
相关推荐
typedef和#define的用法与区别 一、typedef的用法 在C/C++语言中,typedef是一种语言编译过程中的一部分,它常用来定义一个标识符及关键字的别名。它并不实际分配内存空间,实例像:typedef int INT;typedef int ...
- **typedef** 主要用于为已存在的类型起一个别名,提高代码的可读性和移植性。 - **#define 和 typedef 的选择**: - 当需要定义一个简单的文本替换或者常量时,使用 `#define`。 - 当需要为现有的类型定义一个新...
typedef 和 define 是 C/C++ 语言中的两个重要概念,它们都是用于定义标识符或常量的,但它们之间存在着一定的区别。 首先,typedef 用于定义一个标识符或关键字的别名,它是语言编译过程的一部分,但它并不实际...
在 C 语言中,有两个重要的概念,即 #define 和 typedef,它们都是用于定义符号的,但它们之间有着很大的区别。 首先,让我们来看一下 #define。#define 是一个预处理指令,它是宏定义语句。在编译预处理时进行简单...
在C/C++语言中,typedef和define是两个常用的关键字,虽然它们都可以用来定义别名,但是它们的用法和特点却有很大的区别。 一、typedef的用法 typedef是C/C++语言中的一个关键字,用于定义一个标识符的别名。它是...
在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一...
`#define` 和 `typedef` 是 C/C++ 语言中两种不同的类型定义方式,它们各自有不同的特性和用途。 首先,`#define` 是预处理器指令,它的主要功能是在编译之前进行文本替换。这意味着,当你在代码中使用 `#define` ...
虽然`#define`是一个非常有用的工具,但在使用时需要注意其局限性和潜在的问题。为了避免陷阱,建议遵循以下几点: 1. **使用括号来确保宏参数的正确求值顺序**。 2. **避免在宏定义中重复使用参数**,除非确实需要...
总的来说,理解`typedef` 和 `#define` 的区别,并根据具体情况选择合适的工具,是编写高效且易于维护的C/C++代码的关键。在现代C++编程中,通常推荐使用`typedef` 或其C++11后的替代品`using` 关键字,以及`const` ...
为了避免头文件在同一个编译单元中被多次包含,从而导致编译错误,可以使用预处理指令#ifndef、#define和#endif。例如: ```c #ifndef COMDEF_H #define COMDEF_H // 头文件内容 #endif ``` 这种方法称为头文件保护...
上述代码的意图是定义两个 `int` 类型的指针 `a` 和 `b`,但由于 `#define` 的工作方式,实际上定义的是一个 `int` 类型指针 `a` 和一个 `int` 类型变量 `b`。正确的做法是使用 `typedef` 语句来定义指针类型: ```...
定义的类型不同,typedef定义的是类型,而#define不只是可以为...typedef虽执行范围有限,但在范围内比#define要更加灵活,例如在指针类型的定义上,typedef可以定义一个指针类型,而#define只能定义一个指针。 type
在C/C++编程语言中,`typedef` 和 `#define` 都被用来为现有的类型创建新的别名,但它们之间存在着本质的区别。本篇文章将详细介绍`typedef`的四个主要用途,两个需要注意的陷阱,以及它与`#define`的区别。 **`...
typedef 和 #define 的区别在于,typedef 可以定义一个新的类型别名,而 #define 只是一个简单的字符串代换(原地扩展)。typedef 的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能。 例如,...
在计算机编程语言中,typedef和#define是两个常用的关键字,都是用于声明和定义类型的,但是它们之间有着很大的区别。 首先,typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到...
这种方式创建了一个唯一标识符`__HEADERFILE__`,确保头文件只被包含一次。 总的来说,`#define`是C/C++中一个强大且灵活的工具,但它的使用需谨慎,因为它可能导致难以预料的副作用。在编写代码时,应尽量遵循...
总结一下,`#define` 和 `typedef` 的主要区别在于: 1. `#define` 是预处理器的文本替换,不保留类型信息,可能引入类型错误。 2. `typedef` 是类型定义,保留类型信息,提供更好的类型安全性和可读性。 3. 在涉及...