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

Neo吴允哲

Neo吴允哲

2016-02-19 09:07

图老师小编精心整理的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 %sn", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
   return 0;
}

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

有下面两种定义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 %sn", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

   return 0;
}

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
C语言中#define与typedef的互换细节详解

C语言中宏定义使用的小细节

编程语言 网络编程
C语言中宏定义使用的小细节

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

c语言中位字段与结构联合的组合使用详解

编程语言 网络编程
c语言中位字段与结构联合的组合使用详解

c语言中 基于随机函数的使用详解

编程语言 网络编程
c语言中 基于随机函数的使用详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

基于C语言中段错误的问题详解

编程语言 网络编程
基于C语言中段错误的问题详解

c语言中return与exit的区别浅析

编程语言 网络编程
c语言中return与exit的区别浅析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

增大、减小word文字字号大小的快捷方法

增大、减小word文字字号大小的快捷方法

基于C语言中段错误的问题详解

基于C语言中段错误的问题详解
下拉加载更多内容 ↓