前言:定義結構體並不是定義一個變量,而是定義了種數據類型。
結構體作用:
結構體和其他類型基礎數據類型一樣,例如int類型,char類型 只不過結構體可以做成你想要的數據類型。以方便日后的使用。
在實際項目中,結構體是大量存在的。研發人員常使用結構體來封裝一些屬性來組成新的類型。由於C語言內部程序比較簡單,研發人員通常使用結構體創造新的“屬性”,其目的是簡化運算。
結構體在函數中的作用不是簡便,其最主要的作用就是封裝。封裝的好處就是可以再次利用。讓使用者不必關心這個是什么,只要根據定義使用就可以了。
摘自:百度百科
一、定義結構體
基本語法:
struct 結構體名字 { 類型 名字; 類型 名字; 類型 名字; ... };
結構體的定義方法三種,請繼續往下看。
定義方法一:
struct programmer { char *name; int age; int phone; };
初始化:
struct programmer proTest = {"Garvey", 28, "13823992034"};
定義方法二:
struct { int age; int tag; } str1;
初始化,這個只能使用點語法,具體請往下看。
定義方法三:
typedef struct { char *name; int tag; } structExt;
使用typedef可以創建新類型,現在可以使用structExt定義新的結構體變量了。
我們可以看到,方法一和方法二的區別。方法一聲明了結構體名字,但沒有聲明結構體變量。方法二聲明了結構體變量,但沒有聲明結構體名字。因此我們可以知道:“結構體名字和結構體變量必須有其一,也可以兩者都存在”。
結構體名字及結構體變量都存在,例:
struct programmer { char *name; int age; char *phone; } proSuccess, proFail;
二、結構體成員訪問和賦值
訪問和賦值都是使用點語法
訪問:
proSuccess.name;
proSuccess.age;
proSuccess.phone;
賦值/修改:
proSuccess.name = "Calvin"; proSuccess.age = 27; proSuccess.phone = "13138940202";
三、注意點
錯誤初始化寫法,這句話在預編譯時就會報錯:
proSuccess = {"name", 10, "13732423452"};
寫了這么多,都還沒輸出過任何內容,這里要說的是。使用char定義的變量,輸出時要使用%s。例:
NSLog(@"%s- %d - %s", proTest.name, proTest.age, proTest.phone);
PS:使用char定義的變量,不能存儲中文(因為我不知道如何輸出,輸出會變成亂碼,你根本都看不懂)。
博文作者:GarveyCalvin
博文出處:http://www.cnblogs.com/GarveyCalvin/
本文版權歸作者和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文鏈接,謝謝合作!
