位置:首页 > > 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;