標籤:使用 ar strong on amp as har 如何 return
一、全域變數和局部變數
(1)全域變數定義在函數外,局部變數在函數體內,前後範圍不同,生命週期也不同。
二、結構體
(1)定義了結構體不會分配記憶體,只有用結構體定義了變數才會為這個變數分配記憶體。第一個成員的地址就是結構體變數的地址。
int main(int argc, const char * argv[]) { //結構體的格式 struct person{ int age; char *name; }; //定義變數 struct person p1; //賦值,多種賦值方式,比如 struct person p2={10,"tom"}; p1.age=28; p1.name="andy"; //訪問 printf("%s\n",p1.name); return 0;}
(2)分配的空間大小是佔用最大位元組成員變數的倍數。比如上述結構體,int是4位元組,char *是8位元組,一共是12位元組,但為了要是最大位元組成員的整數倍,所以每個結構體變數一共是16位元組。
(3)還有很多種方式定義結構體變數。除了以上方法,還可以在定義結構體的同時在後面分號前面加個p,直接定義一個變數。還有一種方式是匿名結構體,這種匿名結構體只能一次性定義變數,因為後續不能複用。
(4)結構體數組。就是在定義結構體變數的時候批量定義並初始化。如struct person p[3]={{},{},{}};。但很少用。結構體數組只能在定義的時候初始化。
(5)結構體和數組一樣,不可以先定義變數,然後再賦值。
(6)指向結構體的指標,因為是指向結構體的,所以定義方式就是struct person *p;即可。p=&p1;就是把這個指標指向p1。重點是如何取值。可以用(*p).age;但是更普遍的是p->age。
(7)結構體,當然可以嵌套使用。
(8)結構體相比數組最大特點是,裡面可以存放不同類型數值,而數組只能是同種數值。
三、枚舉變數
int main(int argc, const char * argv[]) { //盡量不要使用數值,所有數值都是魔鬼數值 //int gender=0; //定義一個枚舉 //我們可以給MAN=100,那麼下面的值是一次遞增的,即WOMAN是101 enum Gender{ MAN, WOMAN }; //使用並定義一個枚舉變數gender1 enum Gender gender1=MAN; return 0;}
【Xcode學C-5】結構體、全域局部變數以及枚舉變數的知識點