图老师小编精心整理的C语言中#define与typedef的互换细节详解希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~
【 tulaoshi.com - 编程语言 】
代码如下:
#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示例不能通过,但是,程序中只要添加一个字符,就可以了.
====================这个问题的解答===========================
有下面两种定义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]);
return 0;
}
==========================
确实很巧妙!
来源:http://www.tulaoshi.com/n/20160219/1589593.html
看过《C语言中#define与typedef的互换细节详解》的人还看了以下文章 更多>>