专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

一起学C程序设计第九课预处理和动态分配内存

  这节课作为前几课的补充扩展,来让初学者了解更多的C语言的特性。一个是C语言的预处理(预编译)命令,一个是动态分配内存,补充上节课的指针。预处理命令
  C程序在编译的阶段,一般预先处理一些事情,称之为预处理或者预编译阶段。这个时候只对源码做一些转换处理,并不涉及内存分配,和编译阶段做的事情完全没有关联。合理的使用预处理命令能使程序更加灵活可控,还具备很好的可移植性。
  C语言预处理
  宏定义
  一般在文件的开头使用宏定义,定义常量也属于宏定义。宏定义标识符只做编译前的源文件字符替换,不参与编译过程。普通宏定义如常量:defineSTRINGvalue可以进行表达式代替值,比如先定义defineA1之后可以再定义defineBA1带参数的宏定义,defineADD(x,y)xy,源文件可以ADD(1,2)这样调用
  条件编译
  顾名思义,条件编译指源文件中的代码有条件的参与编译,不满足条件不会参与编译,这与C语言中的if语句有类似的作用,但是有明显的区别:if语句不管满不满足条件都参与编译,在程序执行过程中去判断执行;条件编译则在预编译阶段把不满足条件的代码剔除掉,减少了编译的语句,也就没有了在程序执行过程中的判断逻辑。ifdefSTRING。。。else。。。endif,其中else可以省略,如果定义了STRING则执行ifndefSTRING。。。else。。。endif,与上面相反,如果没有定义STRING则执行
  文件包含
  C语言用include来包含文件,即将另一个文件合并到当前文件中,include两种用法:include,一般包含的是系统的库函数头文件includefile,一般包含用户自定义的文件
  预编译时,遇到尖括号优先去系统目录查找,遇到双引号优先去用户项目目录查找,所以根据引用的文件来决定使用尖括号还是双引号,可以节约查找时间,节约预编译的时间。动态分配内存
  void类型指针
  先说void类型的指针,这种特殊的指针类型不表示任何数据类型,在使用时根据需要做数据类型的转换,如:voidp;intp2(int)p;
  C语言void指针
  开辟动态内存
  使用malloc()函数来申请一段固定长度的内存空间,返回的是一个void指针,在使用的时候可以直接定义一个基础类型的指针,然后给其赋值,C语言在编译的时候会自动把void指针转换为你定义的指针类型,如:intpmalloc(sizeof(int));
  使用calloc()函数来申请n个连续的固定长度的内存空间,定义好之后根据指针的移动,可以轻松传递一个数组进去。
  重新定义内存
  使用realloc()函数来为已经申请内存的指针变量重新分配内存空间。先看如下示例:
  realloc()函数示例
  上面代码中,由于对p2做了运算(p2),所以在重新分配内存的时候要把p2的指针指向初始位置,即p23的位置。对于realloc()的使用总结一下几点:第一个指针参数必须指向已申请内存的首地址重新分配内存空间后,如果失败则返回NULLrealloc()第一个参数可以是NULL,这样使用相当于直接开辟新内存空间,和malloc()、calloc()功能一样realloc()可以嵌套调用,也就是已经被重新分配的空间还可以再次重新分配
  释放内存
  使用free()函数释放上面三个函数申请的内存空间,和realloc()一样,需要保证指针地址指向内存空间的初始值。总结
  预处理命令在第三版有章节介绍,而第五版删除了,但是我们要知道有这个东西,能读懂别人的代码,因为这种预处理命令在C语言中很常见。
  关于指针要多练习,使用时要小心,结合动态分配内存去理解并加以运用。有任何疑惑的地方,最好的方法还是借助于VisualStudio去验证自己的理解和想法,遇到搞不懂的地方多去网上搜寻资料,要有刨根问底的劲儿!往期文章
  一起学《C程序设计》第八课指针
  一起学《C程序设计》第七课函数及实战练习
  一起学《C程序设计》第六课数组、字符串及实战练习
  一起学《C程序设计》第五课循环控制及实战练习
  一起学《C程序设计》第四课if语句、switch语句及实战练习

西媒日本能否避开全球通胀冲击西班牙国家报近日发表题为日本通货紧缩的螺旋式发展及其启示的文章,作者是阿尔韦托伊格莱西亚斯,文章编译如下世界银行将去年定义为不确定的一年,而今年将遵循相同的路线。在以通货膨胀和加息动作冒险游戏虚构世界2发售,增加本地双人玩法IT之家3月12日消息,由BedtimeDigitalGames开发的虚构世界2(Figment2)游戏现已发售,登陆PCXboxPS5平台。上一代游戏在Steam评价特别好评,且(科技)新研究发现全球海洋微塑料污染物快速增长新华社北京3月13日电美国研究人员综合多年观测数据发现,自2005年以来,全球海洋中的微塑料污染物快速增长,目前可能总共有超过230万吨微塑料漂浮在表层海水中。微塑料指直径小于5毫研究发现全球海洋含170万亿个塑料微粒据法国媒体当地时间10日报道,一项最新研究表明,受到塑料垃圾污染影响,截至2019年,全球海洋中塑料微粒约为170万亿个,海洋塑料污染正变得越来越严重。当地时间3月8日,发表在国际科学强国全球广泛使用的PFAS,为什么被欧洲五国申请禁用?PFAS(全氟和多氟烷基物质)现在遍布世界各地。但有五个欧洲国家希望在整个欧盟范围内禁止生产使用和进口这组物质,并已向欧洲化学品管理局(ECHA)提交了限制PFAS的提案,其中最积有声绘本逃家小兔一场爱的捉迷藏游戏玛格丽特怀兹布朗文,克雷门赫德图的逃家小兔(精)讲述了小兔子对妈妈说我要跑走啦!如果你跑走了,妈妈说,我就去追你,因为你是我的小宝贝呀!一场爱的捉迷藏就此展开从前有一只小兔子,他很国产武侠哪家强?steam武侠风国产独立游戏推荐武侠是国人难以割舍的情怀,从另类的角度解读上来看,武其实代表着自身,侠代表着众生百态与自身的联系。每当在生活中面临重大选择之时,侠之一字就会时刻提醒我们要乐于助人。喜欢武侠的游戏玩规划大师简评一款用思维导图基建的资源管理游戏极简种田?这是个什么形式最开始听说这款游戏的时候,笔者还挺好奇的,毕竟明明是种田游戏,无非就是面多加水,水多加面,极简又能怎么个极简法。点进商店一看确实极简,别说面多加水,游戏里全国产水墨风武侠游戏无极道人开启抢先体验,首销价17。6元IT之家3月13日消息,国产水墨风武侠游戏无极道人已于今日在Steam开启抢先体验,首销价17。6元。无极道人是一款主打战斗玩法的3D动作游戏,它独创了基于物理的角色运动系统,会随442名选手参赛!这项赛事在珠海收官3月12日,2022年广东省青少年国际跳棋锦标赛(去年赛事延期举行)在珠海圆满收官。此次比赛为期2天,吸引了来自广州深圳中山珠海等地共24支单位队伍442名选手参赛。据悉,比赛设分魅族20系列Geekbench跑分出炉,采用12GB内存,单核超2000分魅族已经官宣将会在3月30日发布全新的魅族20系列手机,作为魅族新征程的首款旗舰手机,关注度自然也非常高。目前魅族20系列Geekbench跑分已经现身数据库,其单核超过2000分
非凡十年济南槐荫经济开发区的西引力刚一走进济南槐荫经济开发区,目之所及的科技产业园重点项目建设基地和各类高新技术企业,无不彰显着这里作为济南市中心城区唯一的省级经济开发区的蓬勃活力。多年来,这里从2平方公里,发展为9月新势力销量排名理想爆火,问界变黑马,哪吒逆势上位Hello,大家好!我是Mogo去年九月,小鹏和蔚来的交付量首次突破一万台。对于两个品牌和中国各家新能源车企来说都是一个里程碑。而仅仅一年后的今天,新势力月交付过万就成了常态。又是最糟糕的时候还没有到来董沛10月11日,国际货币基金组织(IMF)发布了最新一期世界经济展望报告,称超过三分之一的全球经济体将在今年或明年出现萎缩。报告坦言,最糟糕的时候还没有到来,对很多人来说,202十四五时期全国计划建设筹集保障性租赁住房近900万套(间)央视网消息近日,近一千名应届毕业生入住了北京首批毕业生公寓试点项目。随着建设规模扩大,未来,保障性租赁住房将覆盖到更多青年人新市民群体。在北京朝阳区这个毕业生公寓项目,应届毕业生租存储芯片市场行情走低,美光SK海力士等减支减产过冬记者彭新编辑作为行业晴雨表的存储芯片行情持续走低,迫使美光三星SK海力士等主要存储大厂持续调整业务。存储芯片的出货大头由DRAM(内存)和NAND闪存两大类芯片占据,多用于个人电脑暴跌的理想,到了被市场清算的时刻?(图源理想官网)文孙越编辑Emma蔚小理的新能源车故事,投资者又双叒不爱听了。今年三季度开始,蔚小理美股港股的股价一泻千里,三家都几乎都达到了腰斩成就理想三个月以来大跌50,小鹏大中国共产党第二十次全国代表大会纪念邮票16日发行新华社北京10月14日电(记者赵文君)中国邮政定于10月16日发行中国共产党第二十次全国代表大会纪念邮票一套2枚,小型张1枚。邮票计划发行数量为1390万套,小型张计划发行数量79非凡十年丨金龙客车奋进美好出行社区从线条到圆圈,以人的出行需求为原点,美好的出行社区就是美好的生活圈。我们希望全球有道路的地方,就有金龙车辆,让所有人都能体验到美好出行。金龙客车党委书记总经理刘志军生动阐释了企业正1。49亿,湖人豪阵出炉!哈姆走前任老路,詹姆斯获益浓眉压力不小战胜了勇士之后,湖人迎来了他们这两个赛季以来的首场季前赛胜利,接下来,湖人还有两场季前赛要打,对手分别是森林狼和国王,虽说季前赛的比赛无关紧要,这些比赛的成绩不会被记入新赛季的战绩欧冠0布鲁日三轮不胜出线形势岌岌可危北京时间13日045,欧冠小组赛B组第四轮马德里竞技主场对阵布鲁日,格子搭档科雷亚菲利克斯替补。上半场,萨乌尔打入一球但是越位在先进球无效!随后布鲁日获得点,但是VAR回放又取消点北控输山东!高登张帆俞长栋64分,哈斯三宁拉胯,末节引崩盘北京时间10月13号北控和山东的比赛,这场比赛应该算是焦点战了,这两支球队的热度都不错。不过在前三节都紧咬比分的情况下,末节北控却突然断电了。被保罗直接投死,从而93104输掉了这
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网