位置:首頁 > 高級語言 > Objective-C教學 > Objective-C 變量

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中有兩種類型的表達式:

  1. lvalue : 該表達式是一個左值,可能會出現一個賦值為左邊或右邊。

  2. rvalue : 這是一個右值表達式可能會出現在右側而不是左側的任務。

變量是左值,可能會出現在左手側的一個賦值。數字文本是右值,所以不得指讓,並不能出現在左側。以下是一個有效的語句:

int g = 20;

但是,下麵不是一個有效的語句,會產生編譯時錯誤:

10 = 20;