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),必須使用結(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),我們使用成員訪問運(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
可以傳遞一個(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/類別