Objective-C變數

變數是程式可以操作的存儲區域的名稱。 Objective-C中的每個變數都有一個特定的類型,它決定了變數記憶體的大小和佈局; 可存儲在內存中的值的範圍; 以及可以應用於變數的操作集。

變數的名稱可以由字母,數字和下劃線(_)字元組成。 它必須以字母或下劃線開頭,它是區分大小寫的,即:大寫和小寫字母是不同的變數。 根據前一章解釋的基本類型,有以下幾種基本變數類型 -

編號 類型 描述
1 char 通常它是一個八位(一個位元組),這是一個整數類型。
2 int 機器最自然的整數大小,一般是2位元組或4位元組
3 float 單精確度浮點值。
4 double 雙精度浮點值。
5 void 表示不存在類型(什麼類型也不是)

Objective-C編程語言還允許定義各種其他類型的變數,這些將在後續章節仲介紹,其他類型如:枚舉,指針,數組,結構,聯合等。在本章中,只學習基本變數類型。

1. Objective-C變數定義

變數定義告訴編譯器為變數創建存儲的位置和數量。 變數定義指定數據類型,並包含該類型的一個或多個變數的列表,如下所示 -

type variable_list;

這裏,type必須是有效的Objective-C數據類型,它包括:charw_charintfloatdoublebool或任何用戶定義的對象等,variable_list可以包含一個或多個用逗號分隔的識別字名稱。下麵顯示了一些有效的聲明 -

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

第一行:int i,j,k;聲明並定義變數ijk; 它指示編譯器創建名為ijkint類型變數。

變數可以在聲明時初始化(分配初始值)。 初始化程式包含一個等號,後跟一個常量運算式,如下所示 -

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); 所有其他變數的初始值未定義。

2. 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 \n", c);

  f = 80.0/3.0;
  NSLog(@"value of f : %f \n", f);

  return 0;
}

編譯並執行上述代碼時,它將產生以下結果 -

2018-11-14 01:44:55.382 main[141586] value of c : 30
2018-11-14 01:44:55.383 main[141586] value of f : 26.666666

同樣的概念適用於函數聲明,在聲明時提供函數名稱,並且可在其他任何位置給出其實際定義。 在下面的示例中,使用C函數進行瞭解釋,Objective-C也支持C樣式函數 -

// 函數聲明
int func();

int main() {
   // 調用函數
   int i = func();
}

// 函數定義
int func() {
   return 99;
}

3. Objective-C的左值和右值

Objective-C中有兩種運算式 -

  • 左值 - 引用記憶體位置的運算式稱為“左值”運算式。左值可以顯示為賦值的左側或右側。
  • 右值 - 術語右值是指存儲在內存中某個地址的數據值。右值是一個不能賦值給它的運算式,這意味著右值可能出現在賦值的右邊但不是左邊。

變數是左值,因此可能出現在賦值的左側。 數字文字是右值,因此無法分配,也不能出現在左側。 以下是有效的聲明 -

int g = 20;

但是以下不是有效的語句,會產生編譯時錯誤 -

10 = 20;

上一篇: Objective-C數據類型 下一篇: Objective-C常量