上一章Objective-C开发教程请查看:Objective-C基本语法和数据类型
这一章我们介绍OC中的变量和常量及其使用,其中变量要注意的是声明和定义,常量部分要注意的是使用#define和const,由于OC是C的超集,所以还是有一些C语言的概念,例如声明和定义,函数也有声明和定义,这个后面会讨论到。
Objective-C变量变量就是用来指定储存区域的,变量有数据类型限制,用来指定数据在内存中的大小、范围、结构等,其中数据范围决定可以在内存中存储的数据的大小,另外还包括与变量相关的一些列操作,例如对于基本数据类型就有四则运算。也就是说任何一个数据类型都必定包含对应的操作,这就是数据结构和算法了。
对于变量的命名推荐使用驼峰的格式,例如userName,myPassword等。
在上一章中我们讨论了OC中所有种类的数据类型,包括:基本数据类型、枚举类型、指针类型、数组、结构体、联合体等等,这里我们主要是讨论基本树类型的变量,其它数据类型也是类似的。
谨记:变量定义是分配内存空间的,也就是变量已经实际拥有一个对应的内存空间了,不管有没有初始化(静态类型初始化为NULL,其它未定义)。
Objective-C定义变量
变量定义的意思是告诉编译器如何创建和储存这个变量,使用语法如下:
type variables;
type是数据类型,variables是一个或多个变量标识符,这个语句同时声明和定义变量,下面是一个例子:
int i, j, k;
char ch;
NSString *str;
double point;
变量的初始化可以在声明语句中进行,语法如下:
type name = value;
下面是一些例子:
extern int a = 3, b = 9;
float number = 90.99;
byte b = 5;
char y = 'y';
对于没有初始化的定义,会使用NULL隐式初始化具有静态储存期的变量,其它类型的变量都是未定义的。
Objective-C变量声明
变量声明是告诉编译器存在某一个变量:数据类型和标识符,用于编译器编译阶段,但是在链接阶段会去找具体实现(如果没有实现,OC只有运行时才会报错,C语言在build的时候就报错了)。
变量声明顾名思义也就是说:编译器,这里有一个变量,记得不要报错哈!
和C语言类型,使用extern声明变量(或函数),告诉编译器是有这个变量的。一个常见的用法是:当多个文件共享一个变量的时候,可以使用extern声明变量。
但是谨记:变量声明不分配内存空间,只是告诉编译器有这个变量,叫编译器自己去找,找不到再报错。也就是说,变量定义只有一个(重复定义会报错)。
另外,如果当初是使用其它文件的变量,不需要导入变量所在的头文件。
下面是一个简单的例子,在同一个文件内:
// 变量声明
extern int a, b, c;
extern float p;
int main () {
/* 变量定义 */
int a, b;
int c;
float f;
/* 初始化 */
a = 10;
b = 20;
c = a + b;
NSLog(@"c : %d", c);
p = 3.14;
NSLog(@"p : %f", f);
return 0;
}
同样的概念也适用于函数声明,同时,OC支持C语言风格的函数,对应的声明一般是放在你需要使用的地方,而实现可以放在任何文件中,下面是函数声明和定义的例子:
// 函数声明
int func();
int main() {
// 函数调用
int i = func();
}// 函数定义
int func() {
return 0;
}
Objective-C中的左值和右值
OC中有两种表达式:
- 一种是左值表达式,它表示内存位置,右边的值赋给左边;
- 另一种是右值表达式,它表达式内存中的数据,所以不能用来赋值。
但是常量和普通变量是一样的,只不过不能更改它们的值。
整型常量
一个整型常量可以是十进制数,八进制数或者是十六进制数,十六进制数使用0x或0X作为前缀,八进制数的前缀为0。
整型常量也可以有一个后缀:U和L,U表示unsigned,L表示long,后缀可以使用小写或者大写,但是一般都是使用大写。
下面是一些整型常量的例子:
11
215L // long
12u // unsigned
0xff0a // 十六进制
078 // 八进制
浮点常量
一个浮点常量包括整数部分、小数部分和指数部分,我们可以使用小数表示浮点数,或者使用指数表示,下面是一些例子:
3.1415926
31415926E-7L
112E
9.
109.e10
字符常量
字符常量使用单引号括起来,例如’ x’ 和’ y’ ,它们的类型是char类型,储存的是单个字符。
其中一个字符常量可以是一般的字符,或者一个转义字符,如’ \n’ ,或者一些编码字符如’ \u2145′ .
转义字符有特殊的含义,一个转义字符一般不是其字面量的意思,例如’ \n’ 表示换行,下面是一些常用的转义字符:
转移字符 | 解释 |
---|---|
\\ | 表示一个 \ |
\’ | 表示单引号 ‘ |
\” | 表示双引号 “ |
\? | 表示问号 ? |
\a | 表示一个警报或铃声 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位数的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
#import <
Foundation/Foundation.h>int main() {
NSLog(@"Hello\tWorld\n\n");
return 0;
}
字符串常量
字符串常量使用双引号括起来,例如:” string” ,一个字符串包含一个或多个字符。
在OC中使用字符串需要使用NSString类型进行定义,下面是一些例子:
"STRING"
"OC"
"iOS"
"macOS"
C风格定义常量
C风格定义常量的方式有两种:
- 使用#define宏定义,注意#define宏定义仅仅是字符串替换(可以说其标识符并不是一个变量,会在预编译的时候在代码中进行替换)。
- 使用const关键字,如const int a = 8; 原则上a就不能再更改了,并且a是一个变量。
使用语法如下:
#define name value
下面是一个使用例子:
#import <
Foundation/Foundation.h>#define LENGTH 10
#define WIDTH5
#define NEWLINE '\n'int main() {
int area;
area = LENGTH * WIDTH;
NSLog(@"value of area : %d", area);
NSLog(@"%c", NEWLINE);
return 0;
}
2、使用const关键字定义常量
使用语法如下:
const type name = value;
【Objective-C使用变量和常量 – Objective-C开发教程】下面是一个使用例子:
#import <
Foundation/Foundation.h>int main() {
const intLENGTH = 10;
const intWIDTH= 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
NSLog(@"value of area : %d", area);
NSLog(@"%c", NEWLINE);
return 0;
}
推荐阅读
- Android 手机卫士7--黑名单拦截
- Objective-C基本语法和数据类型 – Objective-C开发教程
- Xcode Target、Scheme、Build Settings、Porject和Workspace介绍 – Objective-C开发教程
- Objective-C程序结构和项目结构介绍 – Objective-C开发教程
- Objective-C入门介绍和环境安装 – Objective-C开发教程
- jQuery如何使用appendTo()方法(代码实例)
- Virtusa面试经验| 2020校园
- 使用JavaScript将数字四舍五入到5的下一个整数
- 分布式数据库有什么优点呢(简要介绍)