在正式进入oc的世界之前,首先你得之前接触过c语言。不过你都知道oc了,应该对c语言这些入门级语言势必已经有所了解。在这里我再次提醒一些关于学习oc过程中会遇到的关于c语言的知识~(自觉c语言百分百没问题可以忽略。)
*在一个c函数中,使用布尔值的话,必须导入头文件 #include <objc/objc.h>
*sleep()函数在头文件 <unistd.h>中声明,而且sleep()的单位是秒! (第一次用的时候就以为是毫秒,结果就调了1000,一直不显示结果,还以为出bug了)
*函数的局部变量存在函数的帧(frame)中,用 栈(stack)来描述帧在内存中存储的地点
*栈 是后进后出的,就是坐电梯问题,谁最后进来最先出去。还有一点记住了可能会加深印象,就是c语言从main()函数开始执行嘛,那main()方法肯定最先压栈,最后其它运行完调用函数运行完,main()才退栈。 否则运行到一半main()方法退栈跑了程序不就蹦了? 我自从想到了main()函数问题这个问题就清晰了
*静态变量跟全局变量:都是要在函数外声明,但是区别在于只有声明该静态变量的文件才可以访问*该变量,其它文件不可以访问。
*在终端上输入man math 按回车键,可以查看数学代码库。(同样还有 输入man stdio 同样有惊喜噢)
讲了这么多废话,下面给大家介绍一个好玩的。就是 一个结构体。
<pre name="code" class="cpp">/*
<time.h>中声明的结构体,可用于获取时间
*/
<pre name="code" class="cpp">struct tm{
int tm_sec; //除去分钟后的秒数 0~60
int tm_min; //除去小时后的分钟数 0~59
int tm_hour; //从午夜算起的小时数 0~23
int tm_mday; //一个月的天数,即这个月几号 1~31
int tm_mon; //一月算起的月数 0~11 *因为是减去一月,所以输出当前月份时要+1
int tm_year; //从1990算起的年数,故输出当前年份的时候要+1900
int tm_wday; //周天算起的天数,0~6
int tm_yday; //从1月1号算起的天数 0~365
};
下面再介绍两个会跟这结构体相关的函数:
<span style="white-space:pre"> </span>time(); <span style="white-space:pre"> </span>// 会返回1970年开始到现在的秒数!
<span style="white-space:pre"> </span>localtime_r(const time_t *t, struct tm *time); //可以读取time()返回的秒数并填入结构体中
下面不妨通过一段代码来体验一下呗~!
<span style="white-space:pre"> </span>long secondsSince1970 = time(NULL);
<span style="white-space:pre"> </span>printf("It has been %ld seconds since 1970\n",secondsSince1970);
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>struct tm now;
<span style="white-space:pre"> </span>localtime_r (&secondsSince1970,&now);
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span>printf("Now it %d %d %d \n", now.tm_hour, now.tm_min, now.tm_sec );</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">这段代码就可以输出当前的时刻啦 ,当然你也可以自己尝试输出其它变量,把日期也打印出来~由于篇幅有限,就不再一一演示了</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span></span>
<span style="white-space:pre"> </span>*因为栈中的内存由系统自动分配,函数结束后悔自动释放。所以可存在<span style="color:#ff6600;">堆(heap)</span>中,因为独立于任何函数的栈,所以任何时刻任何函数都可以访问。
<span style="white-space:pre"> </span>使用mallo()函数得到一块内存缓冲区(buffer,在堆中)。 用完后记得调用free()函数来释放相应的内存!可配合sizeof()函数来获得缓冲区的准确大小
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span>好啦,带着大家快速粗略地过了一遍c语言一些重要的知识点, 下一篇将会带领大家正式进入 Objective-C的世界~!</span>