变量和数据类型

变量和数据类型

(参考书Objective-C 2.0 程序设计)

        使用枚举数据类型,可以定义只存储一系列特定值的数据类型名称。Objective-C语言的typedef语句允许你对内置或派生的数据类型指派自己的名称

一、类的初始化

1、初始化模式:Fraction *MyFraction=[[Fraction alloc]init]

设置值:[MyFraction setTo:1 over: 3]

初始化对象之后为其设置初值的过程可合并到一个方法中。

2Fountation框架中的NSArray类中包含的几种初始化方法:

initWithArray:

initWithArray:  copyItems:

initWithContentsOfFile:

initWithContensOfURL:

initWithObjects:  count:

示例语句:

MyArray=[[NSArray alloc]initWithArray:myOtherArray];

注:如果你的类包含多个初始化方法,其中一个就应该是指定的初始化方法,并且其他 所有初始化方法都就使用这个方法

二、作用域

1、控制实例变量的作用域的指令

@protected——这个指令后面的实例变量可被该类及任何子类中定义的方法直接   访问。这是默认情况。

@private——这个指令后面的实例变量可被定义在该类的方法直接访问,但是不能   被子类中定义的方法直接访问

@public——这个指令后面的实例变量可被定义在该类的方法直接访问,也可被其   它类或模块中定义的方法直接访问。

@package——对于64位图像,可以在实现该类的任何地方访问这个变量。

:@public指令使得其它方法或函数可以通过使用指针运算符(->)访问实例变量。

2、外部变量

1>概念:在程序的开始处(所有方法,类定义和函数定义之外)定义的变量为全 局变量,也是外部全局变量。

2>声明方式,如:extern int gMoveNumbex;

3>使用原则:变量必须定义在源文件中的某个位置,这是通过在所有方法和函数 外部声明变量,并且前面不加关键字extern 

3、静态变量:它们的值经过不同的方法调用时是共享的。

1>声明方式,如:static int num;

注:静态变量是有默认值为0,普通变量则没有。

三、存储类说明符

1auto(自动):用来声明一个自动变量。

自动为变量分配存储空间,并在退出时自动解除分配。

注:变量声明时如果前面未加说明符则默认为auto类型。

int index;   等效于auto int index;

2const(不变的):程序运行时变量的值不发生改变。

定义方式:const double pi=3.14;

3volatile(易变的):程序运行时变量的值会发生改变。

声明方式:volatile char *outport;

作用:防止编译器优化掉看似多余的变量赋值,同时避免重复检查值没有变化   的变量。

四、枚举数据类型

1、概念:只存储一系列特定值的数据类型。

2、定义方式:使用enum开头

如:enum flag{false,true};

变量声明:前面仍需enum

如:enum flag endOfData,matchFound;

注:从理论上来说,在程序运行中这个数据类型只能指派trueflase两种值,不 能指派其它值。但事实并非如此,即使违背了这个规则,编译器也不会摄氏。

3、枚举数据类型标识符对应的整数值

在定义数据类型时给该标识符指定整数值。如果未指定值,首位默认值为0,后面由前一个enum的值递增1得到。

注:尽量不要依赖枚举值被当作整数这个实事,相反,尽量将它们当作独立的数据 类型。

五、typedef语句

1、作用:编程者可以为数据类型另外指派一个名称。

2、声明语句,如:typedef int Counter;

3、使用typedef定义一个新类型名,一般步骤:

1>像声明需类型的变量那样编写一条语句。

2>在通常应该出现声明的变量名的地方,将其替换为新的类型名。

3>在语句前面加上关键字typedef

六、数据类型转换 

1、数据转换类型可分为:“隐式转换”和“显式转换(强制转换)

2、隐式转换规则:

编译器总是是将类型由低级向高级进行转换,将低级的转换至当前表达式中的最高级类型,且计算结果也为此类型。关系如下

Long double <double <float<long long int<long int <int <short intchar_Booltbit field

 

3、显示转换的使用方法:在要转换的变量前面加上要转换类型名用小括号括起来。

如:f*i+(float)1/s

4、符号扩展

只要将有符号的intshort int 转换成更多字节的整型,在执行转换的过程中符号位就会扩展至左侧。

注:如果要强制对字符变量进行符号扩展,则可将这些变量声明为signed char型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值