偶然發現typedef在c和c++中是不一樣的,在c中定義結構體必須要用到typedef,而在c++ 中定義結構體時用typedef和不用又有不同。
在c中,定義結構體是一定要用到typedef的,我們在c中定義乙個簡單的結構體:
typedef struct student
stu;
stu stu1;
stu1.id=2;
printf("%d\n",stu1.id);
在上面的**中,stu是一種結構體型別,相當於struct student的別名,如果想訪問變數id或者name,必須用stu定義乙個結構體變數stu1,通過stu1來訪問id或者name。
在c++中,定義結構體可以直接這麼寫:
struct student
stu;
stu.id = 2;
cout << stu.id << endl;
這樣可以直接用stu訪問結構體中的變數。
但是如果加了typedef的話,
typedef struct student
stu;
stu stu1;
stu1.id = 2;
cout << stu1.id << endl;
這個時候和c語言定義結構體就一樣了,stu也是一種結構體型別,必須先用結構體型別定義乙個變數,才能訪問到結構體中的變數。
所以我們可以看到,在c++ 中簡化了架構體的定義,可以不加typedef直接定義。
typedef在C和C 的區別?
一 struct定義結構體 1 先宣告結構體型別再定義變數名 struct name name a 如 struct student student stu1,stu2 若在c語言中定義,應該加上struct struct student stu1,stu2 2 一邊宣告型別同時定義變數 struc...
Typedef在C和C 中的使用
在c c 中,使用typedef關鍵字可以給變數起乙個合適的別名,從而有效提高命名的可理解性,變數應用的簡潔性。typedef最簡單的應用在c的的標頭檔案中,define int8 type signed char define int16 type short int define int32 t...
C 中typedef和define的區別
typedef和 define的用法與區別 一 typedef的用法 在c c 語言中,typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int ...