今天跟着做了一个通讯录系统,熟悉了一下OOP。还看到一些写程序经常遇到的问题,可能比较低级,但还是记录一下- -主要是不知道写什么。
首先是字符数组的大小问题,经常用到的一个运算符sizeof(),这个运算符计算的是数组元素个数乘以元素类型占用字节,比如int a[5],计算的结果是4*5,因为int占用4个字节,再比如,double b[2],计算结果是8*2,double占用8个字节。
与数组有关的还有另一个函数:strlen(),strlen主要对字符类型的数组进行操作,计算的是字符数组的长度,即元素个数。
这里还要说到的是,字符数组以''结尾,所以会出现这种情况:
输出结果是:
为什么会这样呢?原因正是前面说到的,字符数组以''结尾,而strlen的工作原理是从字符数组的首地址读取,一直读到''结束。所以上述语句会从第一个读取,读到了第9个才遇到'',于是输出9。
以上,在初始化字符数组最好做以下操作:
结果是:
即给字符数组分配比字符个数大1的空间,并且给最后的元素赋值''。
还有一个概念:int array[5] = {0};问array的类型是什么,第一反应是int *,不过后来好像看到有人说是int[5],不明嚼栗- -
最后还有一个面试经常考到关于宏定义的:#define MUL(A,B) A*B;问MUL(1+1,2+2)为多少。
其实这里主要考察对宏定义的原理是否熟悉,宏定义是一种预编译的操作,所以不会做任何计算,宏定义所做的就是直接替换,即上式变成了:1+1*2+2。