theFirstFourChepter
第2章:
框架:一系列函数、类等程序单元的集合,可以系统提供某一方面的内容
ARC+自动释放池:Objective-C 2.0降低内存管理难度
标识符:变量、类和方法的命名原则:(字母 _ $)开头,后面跟任意数量的(字母_ $数字);
Ps:标识符大小区分,不能包含空格,不能包含例如@%等其余符号
数据类型:
(1)基本类型
a:整形(默认为signed):short int(2); int(4); long int(4); long long(8);sizeof字节
b:字符型:char:1个字节的unsigned整数 0-255(8位);
Bool:signed char 1个字节8位 -128-127,不是所有非零整数值赋给bool都会得到YES:它只取整数值得低8位,若其均为0,则为NO。
C:浮点型:float(4)double(8)long double(16)
Ps:正负浮点型除以0.0得到正负无穷,整数除以0.0得整数值范围内的最大数,若除以0,系统报错
d:枚举型:本质为unsigned int:4个字节,可以比较大小进行计算等,开始为0
类型转换:short-int-long int-long long -float-double-long double
整数转成小数只要不溢出就没问题
小数转成整数就会直接舍弃小数部分(并不是四舍五入)
(2)构造类型
(3)指针类型
运算符:
取余% :取余运算不允许出现double类型的量。先进行除法,所以不允许出现0。
++a和a++:前者为先加后运算,后者为先运算后加。
位运算符:所有的数字在计算机内部以二进制码的形式存在,正数为原码,负数为补码。
左移右移相当于乘以2除以2
各种运算符优先级:P48
第三章:
一个单独的分号相当于一个空语句!!小心多加引号。
for循环中:由于只能有一个声明语句,如果要初始化多个变量,类型得一致才行
eg:for(int i=0;j=0;i<10;j++)
break:直接跳出循环
continue:忽略后面的语句
return:跳出整个函数
goto:直接转到想要的位置
字符串:OC实际上不提供字符串支持,是用字符数组来保存字符串,可以在char数组
中加入‘\0’作为字符串结束的标志。定义了10个,但是在第三位加入‘\0’,
则系统认为字符串的长度是2;
数组:可以不定义长度但初始化;或者定义长度后单独初始化;
eg:char * a[1];a={“sdfsa”};这个不行!!!!只能a[0]={“sfd”};
全局数组若没有初始化会自动初始化为0,且若指定其长度,不允许是变量!!除
非是const变量;局部数组若没有初始化里面的数据是随机的,不可靠的
第四章:返回类型默认会int,若不需要指明为void;
返回值需要但是没有返,则会返回一个随机不可靠的数据
OC中传入函数是由参数传递机制控制的:值传递,若是指针,则会改变
全局变量和局部变量:
局部变量:函数内部定义的变量(形参,函数局部变量,代码块局部变量)
全局变量:函数外部定义的变量.
若全局变量不想被外部文件访问,则加定义时static
若全局变量定义在后,需要使用,则需要先声明:extern int global;
#import 的作用相当于在代码前面加上需要的代码!!!!
动态存储和静态存储:
动态:运行期间分配的内存:全部变量+static变量
静态:函数形参,局部变量,函数执行现场数据和返回地址
#define #undef: 预处理:在执行编译之前
注意:查找+替换, 不是C语言,不可以用=,不可以用;
带参数的宏定义:#define G(r) PI*2*(r) :用括号括起来
#import “” 和#import <> :前者是搜索当前文件所在的路径(或通过Xcode修改),后者是在系
统指定讹“系统”文件中寻找
字符指针:
用来表示字符串,可以重新赋值;eg: char a[100]; a=”fdsfs”;错
char *po;po=”fdsaf”;对
函数指针:赋值给指针时可以不用*,但是调用它时肯定得用
声明:(返回值)(*名字)();eg:(int)(* fnpoint)();
赋值:(int)(* fnpoint)(); fnpoint=ave || (int) (*fnpoint)()=ave;
调用:(*fnpoint) (2,4);
结构体:
1.定义
struct point
{
int x;
int y;
};
struct point point1;
struct point point 2;
2.另外一种定义+合理初始化
struct point
{
int x;
int y;
} point1={1,2};这个可以
struct point point2;
point2 ={1,2};该行错
point2.x=1;point.y=2; 对
3.利用typedef
typedef struct point FKpoint; //和enum一样
FKpoint point1;
块:
块的定义: 返回值(^ 块名)(参数)=^(参数)
{
};
或者:返回值(^ 块名)(参数);
块名==^(参数)
{
};
块的调用:块名(传进去的参数)。
块的局部变量:
块使用的局部变量是定义时捕获的值,可读不可写;若要可读可写,变量前
加_block
块的参数:定义块的类型
#typedef void (^FKBlock)(int,NSString *)
FKBlock block=^(int a ,NSString * b)
{
};//块的类型是FKBlock
block();//调用块
浙公网安备 33010602011771号