- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言之编译器引出的问题
基本解
本节主要探讨C编译器下面两方面的特点所引发的一系列常见的编程问题。
对C文件C程序通常由几个小程序(.c文件)
对函数的参数和返回值建立临时变量C编译器会对函数的参数建立临时参数,也可能会对函数的返回值隐含传递一个指针。因为这些临时变量的隐含性存在,使得在某些情况下,特别是有指针存在的时候,会引发一系列的问题。
C文件中所包含的C语言一同编译C语言中被包含的头文件是和.c文件一起映到.c文件的
C文件的分 我有一个数a定f1.c中,但是我想在f2.c中sizeof可以达到 答案与分析: 答案是否定的,你没有sizeof操作符只是在“compile time)”起作用,而C.c文件sizeof可以确定同一个源文件中某个数“运行run time)”才能确定的事情了。 一件事情要想做, 1)、定.c文件中我^_^)。 2)、在某个.h文件中用宏定#define ARRAY_SIZE 50,然后在两个源文件中都包含.h文件,通ARRAY_SIZE来得到定.c文件中的数 3)、如0,-1,NULL等,然后我 下面的代?
struct list{ char *item; struct list *next;}main (argc, argv){ ...} 答案与分析: 原因很简单,稍微注意一点不难发现,在定义结构list的右花括弧后面加一个分号就可以解决
struct list { char *item; struct list *next;};//缺了这个分号可不行! 好了,问题是解决了,但,你知道这个错误究竟导致了什么致命问题吗?问题不是表面上那么简单的,OK, 首先看一看下面这段代码:
VOID Func ( struct my_struct stX){ .......}struct my_struct stY = {...};Func (stY); 当调用函数Func的stY的FUNC的,C语言的参数值传递。我相信这个你一定很清楚,那么,你应该知道:如果函数的返回值是结构变量的话,函数应该如何将值返回给调用者呢?且看下面
struct my_structFunc (VOID){ .......}struct my_struct stY = Func(); 此Func的返回“神秘指”),而C语言的编译器作为一个隐藏参数传递给函数Func。当函数Func返回stY中,从而完成将 你明白了上述所 因struct list {...}的定main (argc, argv)被argc和argv以外的第三个参数,也就是我“神秘指”。可是,大家知道,main函数,main函数的参数是由程序中的启startup code)提供的。而启main()天生就“神秘指”,当然没有,如此一来, main()在返回 建 1)、尽量将函数调用时内存拷贝的开销可不小,尤其是对那些调用频繁、结构体大的情况。 2)、问题:编译器会给函数的参数隐含制造临时副本 Test函数会有什
void GetMemory2(char **p, int num){ *p = (char *)malloc(num);}void Test(void){ char *str = NULL; GetMemory(str, 100); strcpy(str, hello); printf(str);} 答案与分析: C/C++高 1)、能hello 2)、内存泄漏 另一个相 Test函数会有什
void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, hello world); printf(str);} 答案与分析: 后果GetMemory后,Test函数中的 str仍旧是NULL。可想而知,一调用
strcpy(str, hello world); 程序必然崩溃了事。 原因分析: Cp的副本是 _p, _p = p。如果函数体内的程序修改了_p的内容,就p的内容作相_p申_p所指的内存地址改p丝毫未变。所以函数GetMemory并不能 .c文件一同 下面的代
#include someheader.hint myint = 0;
您可能关注的文档
- 房地产价格制定和推盘策略汇报.ppt
- CPU及编译器概论.pdf
- Cre_lox位点特异性重组系统在高等真核生物中研究进展.pdf
- 房建施工之二模板施工技术及管理.ppt
- 废弃物识别及存放要求.pptx
- CREO2.0教程-第4篇-基础实体特征的建立.ppt
- 夫妻_忠实协议_一个不应成为问题法律话题_省略_干问题解释_三_征求意见稿_.pdf
- CRH2及CRH5动车组通信网络结构比较.pdf
- 改进的粒子群优化算法在分布式电源选址与定容中的应用.pdf
- CRM5.7系统IE设置工具以及系统插件安装程序使用说明.doc
- GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 中国国家标准 GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 《GB/T 22069-2024燃气发动机驱动空调(热泵)机组》.pdf
- GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- 《GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法》.pdf
- GB/T 1148-2024内燃机 铝活塞.pdf
- 中国国家标准 GB/T 1148-2024内燃机 铝活塞.pdf
文档评论(0)