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

 更新时间:2013年05月15日 08:48:11   作者:  
本篇文章是对C语言中#define与typedef的互换细节进行了详细的分析介绍,需要的朋友参考下

复制代码 代码如下:

#include <stdio.h>
/*<---------           #define    string    char *            ---->*/
typedef   char *   string;      

int main(void)
{
   string   a[] = {"I", "like", "to", "fight,"},
   b[] = {"pinch,", "and", "bight."};
   printf("%s %s %s %s %s %s %s\n", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
   return 0;
}


用#define替换掉typedef的行,并且,已经给出的#define示例不能通过,但是,程序中只要添加一个字符,就可以了.

====================这个问题的解答===========================

有下面两种定义pStr数据类型的方法,两者有什么不同?哪一种更好一点?
typedef char* pStr;
#define pStr char*;

答案与分析:

通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:
typedef char* pStr1;
#define pStr2 char *
pStr1 s1, s2;
pStr2 s3, s4;

在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。
上例中define语句必须写成 pStr2 s3, *s4; 这这样才能正常执行。

所以程序

复制代码 代码如下:

#define    string    char *;       
int main(void)
{
   string   a[] = {"I", "like", "to", "fight,"},
   *b[] = {"pinch,", "and", "bight."};   /*<--就是这里!!--*/
   printf("%s %s %s %s %s %s %s\n", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);

   return 0;
}


==========================
确实很巧妙!

相关文章

  • c++实现逐行读取配置文件写入内存的示例

    c++实现逐行读取配置文件写入内存的示例

    这篇文章主要介绍了c++实现逐行读取配置文件写入内存的示例,需要的朋友可以参考下
    2014-05-05
  • Qt实现两个独立窗口的信号通信

    Qt实现两个独立窗口的信号通信

    这篇文章主要为大家详细介绍了Qt实现两个独立窗口的信号通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Dijkstra算法与Prim算法的异同案例详解

    Dijkstra算法与Prim算法的异同案例详解

    这篇文章主要介绍了Dijkstra算法与Prim算法的异同案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • C语言中strcmp的实现原型

    C语言中strcmp的实现原型

    这篇文章主要介绍了C语言中strcmp的实现原型的相关资料,这里提供实例帮助大家理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • C语言中strspn()函数和strcspn()函数的对比使用

    C语言中strspn()函数和strcspn()函数的对比使用

    这篇文章主要介绍了C语言中strspn()函数和strcspn()函数的对比使用,strspn是计算属于字符串的字符数而strcspn则是判断不属于,需要的朋友可以参考下
    2015-08-08
  • opencv实现多张图像拼接

    opencv实现多张图像拼接

    这篇文章主要为大家详细介绍了opencv实现多张图像拼接功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C语言深入分析浮点型数据存储

    C语言深入分析浮点型数据存储

    使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么
    2022-08-08
  • C语言实现简单三子棋小游戏

    C语言实现简单三子棋小游戏

    这篇文章主要为大家详细介绍了C语言实现简单三子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C语言实现抢红包程序代码精简版

    C语言实现抢红包程序代码精简版

    这篇文章主要为大家详细介绍了C语言实现抢红包程序代码的精简版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 使用C++获取逻辑执行毫秒数的方法

    使用C++获取逻辑执行毫秒数的方法

    这篇文章主要为大家详细介绍了如何使用C++获取逻辑执行毫秒数的方法,文中借助c++11提供的steady_clock,实现了精确获取逻辑执行时间的方法,需要的可以参考下
    2024-02-02

最新评论