a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

詳解C語言中#define與typedef的互換細節

2020-02-24 14:26:37
字體:
來源:轉載
供稿:網友

C/C++語言是語言編譯過程的一部分,define通常是用于數據類型,而typedef通常是用于標識符,接下來武林技術頻道小編將為大家詳解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語言中#define與typedef的互換細節,都了解了嗎?如果你還是有不清楚的地方,你可以隨時來關注武林技術頻道的最新消息。

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

圖片精選

主站蜘蛛池模板: 日本免费一区二区在线观看 | 久久精品这里热有精品 | 在线看免费观看日本 | 亚洲欧美日韩另类精品一区二区三区 | 久久久久久亚洲精品中文字幕 | 欧美成人免费在线视频 | 91最新视频| 久久久精品国产 | 久久aⅴ乱码一区二区三区 午夜在线播放 | 免费黄在线观看 | 国产精品一区二区三区免费 | 久久亚洲国产 | 中文字幕av亚洲精品一部二部 | 黄色成人av| 久久91久久久久麻豆精品 | 秋霞av电影| 亚洲成人黄色 | 中文字幕亚洲字幕一区二区 | 亚洲啊v在线 | 四虎影视精品 | 插插射啊爱视频日a级 | 久久tv在线观看 | 色婷婷av一区二区三区软件 | 国产无毒不卡 | 黄色影视在线观看 | 91成人在线视频 | 欧美日韩高清一区 | 91精品国产乱码久久久久久久久 | 国产精品一区二区在线 | 欧美一级在线 | 久久精品免费电影 | 国内福利视频 | 国产免费看 | 日韩成人高清电影 | 国产精品欧美久久久久一区二区 | eeuss影院一区二区三区 | 国产免费一区二区三区四区五区 | 黄色av网站在线免费观看 | 国产亚洲欧美一区二区 | 99福利视频 | 成人一区视频 |