`

看一下typedef和#define的一个区别

 
阅读更多

         首先看一下下面的两种定义,想想会有什么不同:

 

第一种定义:宏定义,以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和#define的用法与区别 一、typedef的用法 在C/C++语言中,typedef是一种语言编译过程中的一部分,它常用来定义一个标识符及关键字的别名。它并不实际分配内存空间,实例像:typedef int INT;typedef int ...

    #define和typedef的使用

    - **typedef** 主要用于为已存在的类型起一个别名,提高代码的可读性和移植性。 - **#define 和 typedef 的选择**: - 当需要定义一个简单的文本替换或者常量时,使用 `#define`。 - 当需要为现有的类型定义一个新...

    typedef和define的区别

    typedef 和 define 是 C/C++ 语言中的两个重要概念,它们都是用于定义标识符或常量的,但它们之间存在着一定的区别。 首先,typedef 用于定义一个标识符或关键字的别名,它是语言编译过程的一部分,但它并不实际...

    #define VS typedef

    在 C 语言中,有两个重要的概念,即 #define 和 typedef,它们都是用于定义符号的,但它们之间有着很大的区别。 首先,让我们来看一下 #define。#define 是一个预处理指令,它是宏定义语句。在编译预处理时进行简单...

    typedef与define的区别

    在C/C++语言中,typedef和define是两个常用的关键字,虽然它们都可以用来定义别名,但是它们的用法和特点却有很大的区别。 一、typedef的用法 typedef是C/C++语言中的一个关键字,用于定义一个标识符的别名。它是...

    C/C++中的typedef和#define详解

     在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一...

    define与typedef 区别

    `#define` 和 `typedef` 是 C/C++ 语言中两种不同的类型定义方式,它们各自有不同的特性和用途。 首先,`#define` 是预处理器指令,它的主要功能是在编译之前进行文本替换。这意味着,当你在代码中使用 `#define` ...

    #define 问题 用法陷阱

    虽然`#define`是一个非常有用的工具,但在使用时需要注意其局限性和潜在的问题。为了避免陷阱,建议遵循以下几点: 1. **使用括号来确保宏参数的正确求值顺序**。 2. **避免在宏定义中重复使用参数**,除非确实需要...

    typedef和#define的用法以及区别

    总的来说,理解`typedef` 和 `#define` 的区别,并根据具体情况选择合适的工具,是编写高效且易于维护的C/C++代码的关键。在现代C++编程中,通常推荐使用`typedef` 或其C++11后的替代品`using` 关键字,以及`const` ...

    #define的使用技巧

    为了避免头文件在同一个编译单元中被多次包含,从而导致编译错误,可以使用预处理指令#ifndef、#define和#endif。例如: ```c #ifndef COMDEF_H #define COMDEF_H // 头文件内容 #endif ``` 这种方法称为头文件保护...

    C语言 #define用法集锦[修正版]

    上述代码的意图是定义两个 `int` 类型的指针 `a` 和 `b`,但由于 `#define` 的工作方式,实际上定义的是一个 `int` 类型指针 `a` 和一个 `int` 类型变量 `b`。正确的做法是使用 `typedef` 语句来定义指针类型: ```...

    C语言自学笔记—typedef与#define的区别

    定义的类型不同,typedef定义的是类型,而#define不只是可以为...typedef虽执行范围有限,但在范围内比#define要更加灵活,例如在指针类型的定义上,typedef可以定义一个指针类型,而#define只能定义一个指针。 type

    typedef的用法及与define的区别

    在C/C++编程语言中,`typedef` 和 `#define` 都被用来为现有的类型创建新的别名,但它们之间存在着本质的区别。本篇文章将详细介绍`typedef`的四个主要用途,两个需要注意的陷阱,以及它与`#define`的区别。 **`...

    #define,const,typedef三者联系与区别

    typedef 和 #define 的区别在于,typedef 可以定义一个新的类型别名,而 #define 只是一个简单的字符串代换(原地扩展)。typedef 的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能。 例如,...

    typedef和define的详细区别

    在计算机编程语言中,typedef和#define是两个常用的关键字,都是用于声明和定义类型的,但是它们之间有着很大的区别。 首先,typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到...

    #define用法集锦.doc

    这种方式创建了一个唯一标识符`__HEADERFILE__`,确保头文件只被包含一次。 总的来说,`#define`是C/C++中一个强大且灵活的工具,但它的使用需谨慎,因为它可能导致难以预料的副作用。在编写代码时,应尽量遵循...

    C语言中#define与typedef的互换细节详解

    总结一下,`#define` 和 `typedef` 的主要区别在于: 1. `#define` 是预处理器的文本替换,不保留类型信息,可能引入类型错误。 2. `typedef` 是类型定义,保留类型信息,提供更好的类型安全性和可读性。 3. 在涉及...

Global site tag (gtag.js) - Google Analytics