国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 凤山县| 惠安县| 平果县| 社会| 宁海县| 睢宁县| 米脂县| 嘉兴市| 容城县| 虎林市| 长兴县| 姚安县| 怀集县| 南漳县| 甘肃省| 萍乡市| 于田县| 凌云县| 城市| 文登市| 惠东县| 邛崃市| 深州市| 徐州市| 旬阳县| 米泉市| 威宁| 怀远县| 新乡市| 黄骅市| 平顺县| 庆阳市| 揭西县| 梁山县| 阳泉市| 南丹县| 图们市| 德钦县| 贵阳市| 德钦县| 青州市|