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

首頁 > 編程 > C > 正文

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

2020-01-26 16:14:23
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#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;
}


==========================
確實很巧妙!

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

圖片精選

主站蜘蛛池模板: 延寿县| 马山县| 达州市| 措勤县| 尉犁县| 四会市| 太仆寺旗| 吴旗县| 崇左市| 确山县| 嘉义县| 准格尔旗| 灌阳县| 望谟县| 金塔县| 岫岩| 莱芜市| 福清市| 上犹县| 津市市| 汉寿县| 额济纳旗| 大渡口区| 衡东县| 古丈县| 大悟县| 祁连县| 肥乡县| 司法| 翁牛特旗| 奉节县| 台江县| 堆龙德庆县| 右玉县| 会宁县| 沙河市| 福州市| 新郑市| 任丘市| 肃北| 舟山市|