学习OC前的一些需要掌握的c语言

在正式进入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>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值