国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

詳解C語言中#define與typedef的互換細(xì)節(jié)

2020-02-24 14:26:37
字體:
供稿:網(wǎng)友

C/C++語言是語言編譯過程的一部分,define通常是用于數(shù)據(jù)類型,而typedef通常是用于標(biāo)識符,接下來武林技術(shù)頻道小編將為大家詳解C語言中#define與typedef的互換細(xì)節(jié),一起來了解一下吧!

?

#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的行,并且,已經(jīng)給出的#define示例不能通過,但是,程序中只要添加一個字符,就可以了.

?

====================這個問題的解答===========================

有下面兩種定義pStr數(shù)據(jù)類型的方法,兩者有什么不同?哪一種更好一點?
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,不是我們所預(yù)期的指針變量,根本原因就在于#define只是簡單的字符串替換而typedef則是為一個類型起新名字。
上例中define語句必須寫成 pStr2 s3, *s4; 這這樣才能正常執(zhí)行。

所以程序

?

#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語言中#define與typedef的互換細(xì)節(jié),都了解了嗎?如果你還是有不清楚的地方,你可以隨時來關(guān)注武林技術(shù)頻道的最新消息。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 鄂托克前旗| 铁岭县| 墨脱县| 衢州市| 吉水县| 马边| 来凤县| 中西区| 威信县| 合阳县| 巴彦淖尔市| 台江县| 望都县| 宁蒗| 富民县| 常宁市| 惠安县| 行唐县| 西青区| 遂溪县| 于都县| 靖远县| 平阳县| 九龙县| 郓城县| 府谷县| 海淀区| 满洲里市| 铅山县| 英山县| 新野县| 徐闻县| 绥化市| 达孜县| 邹平县| 临漳县| 武邑县| 朝阳市| 海原县| 西贡区| 湖南省|