C语言小知识

1.C语言中如何引用一个已经定义的全局变量?


Answer:①引用头文件的方式;②引用extern关键字。

注:※⑴如果引用头文件方式引用某个在头文件中声明的全局变量,在写入头文件名称时若出现错误书写,那么在编译期间则会报错。

  ※⑵如果引用extern关键字,如果将名称写错,则在编译期间不会报错,而在连接时报错。



2.全局变量可以定义在被多个.C文件包含的头文件中吗?为什么?


Answer:可以。在不同的C文件中以static形式来声明同名全局变量。在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件对于此变量赋初值,此时连接不会出错。简而言之就是初始赋值只能有一次,可以多次声明。



3.static修饰的全局变量和普通的全局变量有什么区别?局部变量呢?函数呢?


Answer:

①全局变量加上static修饰后,改变了其作用域,限制了该变量的使用范围----->全局变量本身是静态的存储方式,加上static仍然是静态存储,存储方式并未改变。未加static修饰符的全局变量在各个源文件内都是有效的,而static则限定了只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用该变量。

②局部变量加上statoc修饰后,改变了其存储方式,或称其改变了变量的生存周期----->局部变量存储在栈区上,出了当前代码段(作用域或调用函数的函数体)时则被销毁,而static修饰的局部变量则存放在静态区,生存周期直至程序的结束才被销毁。static修饰的局部变量只能被初始化一次,下一次依据上一次的结果值。③函数体加上static修饰后,作用域发生了改变,仅在本文件中有效----->static修饰的函数在内存中只有一份,而普通函数在每次调用时维持一份拷贝。




4.int a=5;a=(a=3*5,a*4),a+5;问a为多少?


题很简单,但是要注意陷阱。运算符的优先级问题就是此处的陷阱,赋值运算符优先于逗号运算符,括号运算符优先于赋值运算符。所以a=15*4=60,答案为60,要是加上后来的5,那就跳进“坑”里了。




5.C语言中的宏和函数有什么不同?


Answer:

①.宏在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测。

②.宏进行定义时不会考虑参数的类型,即便是将类型指定为形参也可,宏的参数只是原样替换而已,而函数指定了参数类型后,只得按照定义的类型传参。

③.宏的使用会使具有同一作用的代码块在不同地方会产生多个副本,即会增长目标文件的大小,大量使用宏会使代码变的冗长而繁琐,而函数调用则只拷贝一份。

④.宏的运行速度会比函数快,如果函数调用和返回所消耗的时间与执行函数该模块相当,或远大于执行的时间,则使用宏不失为一种快速简便的方法。

⑤.因为宏在编译时不会进行任何逻辑检测,所以在使用时在相应的参数位置应当多加括号以确保优先级的执行顺序。

⑥.函数的参数可以传递指针(地址),也可以传递具体的数值,而宏只是直接的替换。

⑦.程序调试时,函数可以调试,但宏不可调试,编译阶段宏便不复存在,直接替换完成。

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计,皆可应用在项目、毕业设计、课程设计、期末/期/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值