#include
#define pint int*
typedef int* pint;
/*以下實驗說明了:
(1)typedef int* pint;
const pint p1=&i1
的效果是和下面的一樣的
int* const p1;
這裡的const鎖住的是(p1),所以p1=&i2都是錯的,因為這裡記憶體位址p1已經被const鎖住,而*p1=其他值是可以的
(2)#define pint int*
const pint p2=&i1
的效果是和下面的一樣的
const int *p2;
這裡const 鎖住的是(*p2);所以*p2賦予其他值是錯誤的,因為這裡值已經被鎖住,而記憶體位址p2是可以賦予其他位址的。
(3)pint a,b的效果和int* a;int* b;相同
pint a,b的效果和int* a;int b相同
(4)typedef int* pint;
pint const p1=&i1;
的效果和(1)是一樣的;
(5)#define pint int*
pint const p2=&i1;
的效果與(2)剛好相反,也與(1)相同。
總結:由此可見,
(1)defined是巨集替換,所以替換在編譯之前,如const pint p2=&i1,pint const p2=&i1;進行了替換後在編譯的話,編譯的時候就會讓編譯器直接
看到const int *p2以及int* const p2;
(2)而關鍵字typedef有種助記符的趕腳,所以在編譯的時候反應比const慢,所以放在**都是先識別const先,變成int* const p1。
(3)嘻嘻,其他差異也可以看看說明的(3)
*/void main()
define與typedef一樣嗎?
1.define是什麼?define為一巨集定義語句,通常用它來定義常量 包括無參量與帶參量 以及用來實現那些 貌似簡單 實際複雜 的巨集。define並不在編譯過程中進行,而是在這之前 預處理過程 就已經完成了,實際上是簡單的替代。類似於word中的查詢且替代的操作。由於只是簡單的替代,因此難以發...
typedef與 define 的區別
一 typedef的用法 typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int pint typedef可以增強程式的可讀性,以及識別符號的靈...
typedef與 define 的區別
typedef與 define 的區別 一 typedef的用法 typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int pint typede...