鍍金池/ 教程/ C/ Objective-C struct/結(jié)構(gòu)
Objective-C 多態(tài)性
Objective-C 預(yù)處理器
Objective-C for循環(huán)
Objective-C 開發(fā)環(huán)境(安裝配置)
Obj-C Foundation/基礎(chǔ)框架
Objective-C 指針運(yùn)算
Objective-C 循環(huán)
Objective-C 錯(cuò)誤處理
Objective-C while循環(huán)
Objective-C if語句
Objective-C do...while循環(huán)
Objective-C教程
Objective-C 嵌套switch語句
Objective-C 函數(shù)按值調(diào)用
Objective-C 常量
Objective-C 運(yùn)算符
Objective-C 數(shù)據(jù)類型
Objective-C 邏輯運(yùn)算符
Objective-C 數(shù)組作為函數(shù)參數(shù)傳遞
Objective-C struct/結(jié)構(gòu)
Objective-C 嵌套循環(huán)
Objective-C 函數(shù)引用調(diào)用
Objective-C 日志處理
Objective-C 數(shù)據(jù)存儲(chǔ)
Objective-C 教程首頁
Objective-C 擴(kuò)展
Objective-C 異常處理
Objective-C 類型轉(zhuǎn)換
Objective-C 嵌套 if 語句
Objective-C typedef
Objective-C 決策
Objective-C 指針的數(shù)組
Objective-C Protocols/協(xié)議
Objective-C 日期和時(shí)間
Objective-C 指針
Objective-C 內(nèi)存管理
命令行參數(shù)
Objective-C NSString/字符串
Objective-C 動(dòng)態(tài)綁定
Objective-C 復(fù)合對象
Objective-C Arrays/數(shù)組
Objective-C 位運(yùn)算符
Objective-C 指向指針的指針
Objective-C 從函數(shù)返回?cái)?shù)組
Objective-C Posing/冒充
Objective-C Categories/類別
Objective-C 文件處理
Objective-C 賦值運(yùn)算符
Objective-C 函數(shù)返回指針
Objective-C if...else 語句
Objective-C switch語句
Objective-C URL加載系統(tǒng)
Objective-C 算術(shù)運(yùn)算符
Objective-C Numbers/數(shù)字
Objective-C語言程序結(jié)構(gòu)
Objective-C 快速枚舉
Objective-C 基本語法
Objective-C 類&對象
Objective-C 變量
Objective-C 關(guān)系運(yùn)算符
Objective-C 塊
Objective-C break語句
Objective-C continue語句
Objective-C 語言概述
Objective C 文本和字符串
Objective-C 函數(shù)
Objective-C 傳遞函數(shù)的指針
Objective-C 數(shù)組的指針
Objective-C 多維數(shù)組
Objective-C 繼承
Objective-C 數(shù)據(jù)封裝

Objective-C struct/結(jié)構(gòu)

Objective-C 數(shù)組允許您定義的變量的類型,可容納幾個(gè)數(shù)據(jù)項(xiàng)的同類,但結(jié)構(gòu)是另一個(gè)用戶定義的數(shù)據(jù)類型,它允許將不同種類的數(shù)據(jù)項(xiàng)在Objective-C編程。

結(jié)構(gòu)被用來代表一個(gè)記錄,假設(shè)想跟蹤書籍在圖書館??赡芤櫽嘘P(guān)每本書的下列屬性:

  • 標(biāo)題

  • 作者

  • 主題

  • 圖書 ID

定義一個(gè)結(jié)構(gòu)

要定義一個(gè)結(jié)構(gòu),必須使用結(jié)構(gòu)語句。結(jié)構(gòu)語句定義了一個(gè)新的數(shù)據(jù)類型,與一個(gè)以上的成員為程序。結(jié)構(gòu)語句的格式是這樣的:

struct [structure tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more structure variables];  

結(jié)構(gòu)變量是可選的,每個(gè)成員的定義是一個(gè)正常的變量定義,如int;或float f;或任何其他有效的變量定義。結(jié)構(gòu)的定義在結(jié)束之前,最后是分號(hào),可以指定一個(gè)或多個(gè)結(jié)構(gòu)變量,但它是可選的。這里有一種方法,可能聲明書的結(jié)構(gòu):

struct Books
{
   NSString *title;
   NSString *author;
   NSString *subject;
   int   book_id;
} book;  

訪問結(jié)構(gòu)成員

要訪問任何成員的結(jié)構(gòu),我們使用成員訪問運(yùn)算符(.)。成員訪問運(yùn)算符被編碼為一個(gè)結(jié)構(gòu)變量的名稱和結(jié)構(gòu)成員。使用struct關(guān)鍵字定義結(jié)構(gòu)類型的變量。下面的例子來解釋使用結(jié)構(gòu):

#import <Foundation/Foundation.h>

struct Books
{
   NSString *title;
   NSString *author;
   NSString *subject;
   int   book_id;
};
 
int main( )
{
   struct Books Book1;        /* Declare Book1 of type Book */
   struct Books Book2;        /* Declare Book2 of type Book */
 
   /* book 1 specification */
   Book1.title = @"Objective-C Programming";
   Book1.author = @"Nuha Ali"; 
   Book1.subject = @"Objective-C Programming Tutorial";
   Book1.book_id = 6495407;

   /* book 2 specification */
   Book2.title = @"Telecom Billing";
   Book2.author = @"Zara Ali";
   Book2.subject = @"Telecom Billing Tutorial";
   Book2.book_id = 6495700;
 
   /* print Book1 info */
   NSLog(@"Book 1 title : %@
", Book1.title);
   NSLog(@"Book 1 author : %@
", Book1.author);
   NSLog(@"Book 1 subject : %@
", Book1.subject);
   NSLog(@"Book 1 book_id : %d
", Book1.book_id);

   /* print Book2 info */
   NSLog(@"Book 2 title : %@
", Book2.title);
   NSLog(@"Book 2 author : %@
", Book2.author);
   NSLog(@"Book 2 subject : %@
", Book2.subject);
   NSLog(@"Book 2 book_id : %d
", Book2.book_id);

   return 0;
}

上面的代碼編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:

2013-09-14 04:20:07.947 demo[20591] Book 1 title : Objective-C Programming
2013-09-14 04:20:07.947 demo[20591] Book 1 author : Nuha Ali
2013-09-14 04:20:07.947 demo[20591] Book 1 subject : Objective-C Programming Tutorial
2013-09-14 04:20:07.947 demo[20591] Book 1 book_id : 6495407
2013-09-14 04:20:07.947 demo[20591] Book 2 title : Telecom Billing
2013-09-14 04:20:07.947 demo[20591] Book 2 author : Zara Ali
2013-09-14 04:20:07.947 demo[20591] Book 2 subject : Telecom Billing Tutorial
2013-09-14 04:20:07.947 demo[20591] Book 2 book_id : 6495700

作為函數(shù)參數(shù)的結(jié)構(gòu)

可以傳遞一個(gè)結(jié)構(gòu)非常相似的方式作為函數(shù)參數(shù)傳遞任何其他變量或指針。會(huì)以類似的方式訪問結(jié)構(gòu)變量,因?yàn)橐呀?jīng)在上面的例子訪問:

#import <Foundation/Foundation.h>

struct Books
{
   NSString *title;
   NSString *author;
   NSString *subject;
   int   book_id;
};

@interface SampleClass:NSObject

/* function declaration */
- (void) printBook:( struct Books) book ;

@end

@implementation SampleClass 

- (void) printBook:( struct Books) book
{
   NSLog(@"Book title : %@
", book.title);
   NSLog(@"Book author : %@
", book.author);
   NSLog(@"Book subject : %@
", book.subject);
   NSLog上一篇:Objective-C switch語句下一篇:Objective-C Categories/類別