C語(yǔ)言中#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示例不能通過(guò),但是,程序中只要添加一個(gè)字符,就可以了.
====================這個(gè)問(wèn)題的解答===========================
有下面兩種定義pStr數(shù)據(jù)類型的方法,兩者有什么不同?哪一種更好一點(diǎn)?
typedef char* pStr;
#define pStr char*;
答案與分析:
通常講,typedef要比#define要好,特別是在有指針的場(chǎng)合。請(qǐng)看例子:
typedef char* pStr1;
#define pStr2 char *
pStr1 s1, s2;
pStr2 s3, s4;
在上述的變量定義中,s1、s2、s3都被定義為char *,而s4則定義成了char,不是我們所預(yù)期的指針變量,根本原因就在于#define只是簡(jiǎn)單的字符串替換而typedef則是為一個(gè)類型起新名字。
上例中define語(yǔ)句必須寫(xiě)成 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;
}
==========================
確實(shí)很巧妙!
- 詳解C語(yǔ)言中typedef和#define的用法與區(qū)別
- C語(yǔ)言中typedef的用法以及#define區(qū)別詳解
- C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)解析(extern,static,typedef,const)
- C語(yǔ)言?typedef的用法示例詳解
- C語(yǔ)言之結(jié)構(gòu)體定義 typedef struct 用法詳解和用法小結(jié)
- C語(yǔ)言 typedef:給類型起一個(gè)別名
- C語(yǔ)言typedef與復(fù)雜函數(shù)聲明問(wèn)題的深入解析
- C語(yǔ)言中的typedef、#define、const特點(diǎn)和用法介紹
相關(guān)文章
c++實(shí)現(xiàn)逐行讀取配置文件寫(xiě)入內(nèi)存的示例
這篇文章主要介紹了c++實(shí)現(xiàn)逐行讀取配置文件寫(xiě)入內(nèi)存的示例,需要的朋友可以參考下2014-05-05Qt實(shí)現(xiàn)兩個(gè)獨(dú)立窗口的信號(hào)通信
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)兩個(gè)獨(dú)立窗口的信號(hào)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C語(yǔ)言中strcmp的實(shí)現(xiàn)原型
這篇文章主要介紹了C語(yǔ)言中strcmp的實(shí)現(xiàn)原型的相關(guān)資料,這里提供實(shí)例幫助大家理解這部分內(nèi)容,希望能幫助到大家,需要的朋友可以參考下2017-08-08C語(yǔ)言中strspn()函數(shù)和strcspn()函數(shù)的對(duì)比使用
這篇文章主要介紹了C語(yǔ)言中strspn()函數(shù)和strcspn()函數(shù)的對(duì)比使用,strspn是計(jì)算屬于字符串的字符數(shù)而strcspn則是判斷不屬于,需要的朋友可以參考下2015-08-08C語(yǔ)言深入分析浮點(diǎn)型數(shù)據(jù)存儲(chǔ)
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-08-08C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06C語(yǔ)言實(shí)現(xiàn)搶紅包程序代碼精簡(jiǎn)版
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)搶紅包程序代碼的精簡(jiǎn)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07