Objective-C 變量
變量是隻不過是一個名字到存儲區域,讓程序可以操縱。 Objective-C中的每一個變量有特定的類型,確定該變量的存儲器的大小和佈局,可以存儲在該存儲器內的值的範圍內;和設定操作,可變化應用。
一個變量名可以由字母,數字和下劃線。它必須以字母或下劃線開始。大寫和小寫字母是不同的,因爲Objective-C語言是區分大小寫的。前面的章節中介紹的基本類型的基礎上,有以下基本變量類型:
類型
描述
char
通常一個單字節(一個字節)。這是一個整數類型.
int
機器的自然整數大小.
float
單精度浮點值.
double
雙精度浮點值.
void
表示類型沒有(空).
Objective-C的編程語言還可以定義各種其他類型的變量,我們將在隨後的章節,如枚舉,指針,數組,結構,聯合,對於本章,我們只學習基本的變量類型。
Objective-C中的變量定義:
定義一個變量意味着告訴編譯器在哪裏以及如何創建存儲變量。一個變量的定義指定了數據類型,幷包含一個列表中的一個或多個變量的那類型,如下所示:
type variable_list;
在這裏,type 必須是一個有效的Objective-C 數據類型,包括char,w_char, int, float, double, bool或任何用戶定義的對象等,並variable_list 可能包含一個或多個以逗號分隔的標識符名稱。一些有效的聲明如下所示:
int i, j, k; char c, ch; float f, salary; double d;
行中 int i, j, k;;聲明和定義變量i,j和k指示編譯器來創建命名的變量類型爲int i,j和k的。
變量可以在他們的聲明中初始化(分配一個初始值)。初始化由等號後面的常量表達式如下:
type variable_name = value;
一些例子:
extern int d = 3, f = 5; // declaration of d and f. int d = 3, f = 5; // definition and initializing d and f. byte z = 22; // definition and initializes z. char x = 'x'; // the variable x has the value 'x'.
對於沒有初始化的定義:具有靜態存儲持續時間的變量隱式初始化NULL(所有字節值0);所有其他變量的初始值是不確定的。
Objective-C中的變量聲明:
變量聲明提供編譯器,保證有一個具有給定類型和名稱的變量,無需完整的細節進行進一步編譯,這樣編譯器存在的變量。變量聲明有其意義,編譯器在編譯的時候只需要在鏈接程序的時候,實際的變量聲明。
當您使用多個文件和你的文件,這將是在鏈接程序的時候定義的變量,變量聲明是有用的。在任何地方,將使用extern關鍵字來聲明一個變量。雖然你可以在你的Objective-C程序中聲明一個變量多次,但它可以在文件中,一個函數或代碼塊中只定義一次。
例子
試試下面的例子中,變量已被定義在頂部,但他們已經定義並初始化裏面的主要功能:
#import <Foundation/Foundation.h> // Variable declaration: extern int a, b; extern int c; extern float f; int main () { /* variable definition: */ int a, b; int c; float f; /* actual initialization */ a = 10; b = 20; c = a + b; NSLog(@"value of c : %d
", c); f = 70.0/3.0; NSLog(@"value of f : %f
", f); return 0; }
上面的代碼編譯和執行時,它會產生以下結果:
2013-09-07 22:43:31.695 demo[14019] value of c : 30
2013-09-07 22:43:31.695 demo[14019] value of f : 23.333334
同樣的概念適用於函數聲明提供在其聲明的時候,它的實際定義一個函數名可以給其他地方。在下面的例子,它使用C函數,正如所知道的 Objective-C支持C風格的函數也解釋:
// function declaration int func(); int main() { // function call int i = func(); } // function definition int func() { return 0; }
Objective-C中的左值和右值:
Objective-C中有兩種類型的表達式:
lvalue : 該表達式是一個左值,可能會出現一個賦值爲左邊或右邊。
rvalue : 這是一個右值表達式可能會出現在右側而不是左側的任務。
變量是左值,可能會出現在左手側的一個賦值。數字文本是右值,所以不得指讓,並不能出現在左側。以下是一個有效的語句:
int g = 20;
但是,下面不是一個有效的語句,會產生編譯時錯誤:
10 = 20;