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


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

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

圖片精選

主站蜘蛛池模板: 星座| 青神县| 绥滨县| 新疆| 铁岭县| 泰州市| 雷州市| 甘德县| 九江市| 象山县| 民县| 藁城市| 乌兰县| 肃宁县| 福州市| 湾仔区| 西乌珠穆沁旗| 金乡县| 临海市| 马鞍山市| 启东市| 白城市| 娱乐| 东乡县| 从化市| 伊通| 康马县| 泗阳县| 通城县| 运城市| 贡嘎县| 延边| 天峻县| 六枝特区| 龙江县| 博客| 广水市| 长宁县| 阜平县| 奉节县| 饶阳县|