寫作原由,今晚再次查了typedef用法,就在這用着查着中做着一個個項目,可我還是記不住;腦子里裝得是什么?
typedef struct
問題1:
請高手幫忙解釋以下幾種結構體定義的區別:
struct{
int x;
int y;
}test1;
struct test
{int x;
int y;
}test1;
typedef struct test
{int x;
int y
}text1,text2;
這幾種方法把小弟弄得頭疼,不勝感激!
(1) struct{ int x; int y; }test1;
好,定義了 結構 test1,
test1.x 和 test1.y 可以在語句里用了。
(2) struct test {int x; int y; }test1;
好,定義了 結構 test1,
test1.x 和 test1.y 可以在語句里用了。
與 1 比,省寫 了 test
(3)
typedef struct test
{int x; int y; // 你漏打分號,給你添上
}text1,text2;
只說了 這種結構 的(類型)別名 叫 text1 或叫 text2
真正在語句里用,還要寫:
text1 test1;
然后好用 test1.x test1.y
或寫 text2 test1;
然后好用 test1.x test1.y
(4)type struct {int x; int y; }test1;
這個不可以。
改 typedef ... 就可以了。
但也同 (3)一樣,還要 寫:
test1 my_st;
才能用 my_st.x 和 my_st.y
typedef union
問題2:
#include <stdio.h>
typedef union
{long i;
int k[5];
char c;
}DATE;
struct date
{
int cat;
DATE cow;
double dog;
}too;
DATE max;
main()
{printf("%d\n",sizeof(struct date)+sizeof(max));}
程序結果為52,搞不懂……希望能給出詳細解題過程!!!
int k[5]是占幾個字節呀??20還是10呀??
union是公用的,所以DATA的大小是int k[5] =4*5 = 20 struct 是自己用自己的,所以大小是4+20+8 = 32 結果就是52
