1. 关于OC的控制流的介绍:
1) OC的控制流基本继承了C语言的特性;
2) 所有控制流的逻辑判断处完全和C语言一样,可以使用任意类型的值,0和空代表假,非0和非空代表真;
3) if语句等分支部分如果只有一条语句则可以不加花括号,如果有多条语句则必须加花括号;
4) switch-case-defualt结构和C语言用法一模一样(也需要break跳出),只不过判断的表达式还支持long long和long类型,其实也就是支持所有整型以及枚举类型,但是不支持字符串和浮点型;
5) while、do-while、for循环的用法,以及break、continue、return跳出循环的用法,以及嵌套循环的用法都和C语言一模一样;
6) 无条件跳转goto的用法也和C语言一模一样,跳转目的地的标签的定义方法也和C语言一模一样;
2. 数组与字符数组:
1) OC的数组和字符数组完全保留了C语言的特性;
2) 不同的是,OC的数组还加入了一个额外的安全机制,那就是在对数组初始化时,所有没有显式给出初始化值的元素都被自动赋为默认值,对于数值型全部都是0或0.0,对于其它类型(字符串等)都赋为NULL;
3) 一维数组、二维数组以及高维数组的使用和底层实现均和C语言完全相同,只不过在各种风格的不完全初始化时那些没有给出显式初始化的元素都将赋予默认值;
4) 字符数组:
i. 这里将的字符数组就是指ANSI C的字符数组以及C串;
ii. 定义和使用完全和C语言一模一样,数组式初始化或者直接以字符常量来初始化等等完全都和C语言一样;
iii. 结束符也是'\0';
iv. 输出可以使用NSLog,也可以使用ANSI C的printf;
5) 这里补充介绍一下ANSI C的相关的字符和字符串操作函数:
字符判断函数:
int isalnum(int ch); // 判断ch是否为字母或数字
int isalpha(int ch); // 判断ch是否为字母
int iscntrl(int ch); // 判断ch是否为控制字符(ASCII在0 ~ 0x1F之间)
int isdigit(int ch); // 判断ch是否为数字
int isgraph(int ch); // 判断ch是否为可打印字符(ASCII在0x21 ~ 0x7E之间)
int islower(int ch); // 判断ch是否为小写字母
int isupper(int ch); // 判断ch是否为大写字母
int isprint(int ch); // 判断ch是否为可打印字符,比isgraph多一个0x20,即空格
int ispunct(int ch); // 判断ch是否为标点
int isspace(int ch); // 判断ch是否为空白(空格、制表、换行符)
int isxdigit(int ch); // 判断ch是否为十六进制字符(0~9、a~f、A~F,但是不包括x和X)
字符操作函数:
int tolower(int ch); // 返回ch对应的小写字母
int toupper(int ch); // 返回ch对应的大写字母
字符串操作函数:
char* strcat(char* str1, char* str2); // 把str2添加到str1后面返回str1
char* strcpy(char* str1, char* str2[, int n]); // 将str2的前n个字符复制给str1并返回str1
char* strchr(char* str, int ch); // 返回ch在str中出现的第一个位置
char* strstr(char* str1, char* str2); // 返回str2第一次在str1中出现的位置
int strcmp(char* str1, char* str2); // 比较两个字符串的大小
unsigned int strlen(char* str); // 返回str中字符的个数