【Objective-C学习记录】第八天

今天跟着做了一个通讯录系统,熟悉了一下OOP。还看到一些写程序经常遇到的问题,可能比较低级,但还是记录一下- -主要是不知道写什么。

首先是字符数组的大小问题,经常用到的一个运算符sizeof(),这个运算符计算的是数组元素个数乘以元素类型占用字节,比如int a[5],计算的结果是4*5,因为int占用4个字节,再比如,double b[2],计算结果是8*2,double占用8个字节。

与数组有关的还有另一个函数:strlen(),strlen主要对字符类型的数组进行操作,计算的是字符数组的长度,即元素个数。

这里还要说到的是,字符数组以'\0'结尾,所以会出现这种情况:

 

输出结果是:

为什么会这样呢?原因正是前面说到的,字符数组以'\0'结尾,而strlen的工作原理是从字符数组的首地址读取,一直读到'\0'结束。所以上述语句会从第一个读取,读到了第9个才遇到'\0',于是输出9。

以上,在初始化字符数组最好做以下操作:

 

结果是:

即给字符数组分配比字符个数大1的空间,并且给最后的元素赋值'\0'

还有一个概念:int array[5] = {0};问array的类型是什么,第一反应是int *,不过后来好像看到有人说是int[5],不明嚼栗- -

最后还有一个面试经常考到关于宏定义的:#define MUL(A,B) A*B;问MUL(1+1,2+2)为多少。

其实这里主要考察对宏定义的原理是否熟悉,宏定义是一种预编译的操作,所以不会做任何计算,宏定义所做的就是直接替换,即上式变成了:1+1*2+2。

posted @ 2015-12-09 21:51  Shvier  阅读(138)  评论(0编辑  收藏  举报