C语言中的复杂声明.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何理解和应用C语言中的复杂声明 曹定成 (华中科技大学计算机科学与技术学院, 湖北武汉430074) 摘要: 讨论了正确理解复杂声明的含义以及正确使用复杂声明所说明的对象的方法。讨论了各种基本类型指针,构成复杂声明的基本元素,以及类型说明符和数据类型名的优先级和结合性。并以复杂声明char *(*(*f(char *(*para)(char *)))[2])();为例讨论了解释复杂声明的步骤和方法,给出了解释结果,并且给出了使用复杂声明的应用实例。 关键词: 复杂声明;C语言;指针 中图法分类号:TP312 文献表示码:A How to Understanding and Using the Complicated Declarations in C Dingcheng Cao (College of Computer Sci. Tech. Huazhong University of Science and Technology, Wuhan 430074, China) Abstract: In this paper, a method of correctly understanding the meaning of a complicated declaration and using the object in a complicated declaration are discussed. Various primary pointers, the basic elements in complicated declaration, and the precedence and the left-associativity of the operators and the type specifiers are also discussed. According to the complicated declaration char *(*(*f(char *(*para)(char *)))[2])(); the approach and the method of interpreting complicated declaration are introduced. Meanwhile, the application example of using complicated declaration is put forward. Key words: complicated declarations; C; pointer 1 引言 指针是C语言中的一个重要概念,也是C 语言的一个重要特色[1]。以指针为基础的复杂声明是C 语言中的重要组成部分。对于形如char *(*(*f(char *(*para)(char *)))[2])();的复杂声明语句,许多C语言的学习者都感到f的含义非常难以理解,更不敢问津f的使用。的确,复杂声明是学习C语言的难点。但是,准确理解复杂声明的含义也是提高C程序员素质的重要途径。B.W.Kernighan 和D.M.Ritchie曾经说过:“毫无疑问,复杂声明的确产生于实践,但知道如何去理解它们以及在必要时知道如何去创建它们却是非常重要的[2]。”可以这样说:对复杂声明的精确理解,以及创建、使用和驾驭复杂声明的熟练程度是衡量一个C程序员C语言素质高低的重要指标之一。 如何才能正确理解复杂声明的含义?如何在理解复杂声明含义的基础上正确使用复杂声明所说明的对象?其方法是:首先,要对基本类型指针的理解打下扎实的基础;其次,在复杂声明的解释过程中要严格按照优先级和结合性来进行;然后才是在理解的基础上使用复杂声明。 2 基本类型指针 在C语言中,称存储某个变量a的地址值的变量p为指针变量。当指针变量p存储变量a的地址时,称p指向a。在不产生二义情况下,往往称指针变量为指针。指针类型是派生类型。根据指针所指变量是字符型、整型、或浮点型变量,将指针称为字符指针、整型指针、或浮点指针。如:int x=1,*pi=x;就说明了pi是指向整型变量x的整型指针。 数组也可以用指针表示。如:int a[5],*pa=a;它使指针pa指向一维数组元素a[0],pa是指向数组元素的指针。如果用指针表示多维数组,则需要用到指向数组的指针。如:int b[2][3],(*pb)[3]=b;此时pb是指向有三个元素的一维数组的指针,它指向b数组中行下标为0的行。那么,pa++和pb++有什么区别呢?pa++使pa指向a[1],pa的值增加sizeof(int);而pb++使pb指向b数组中行下标为1的行,pb的值增加3*sizeof(int)。 由同类型指针可以构成指针数组。如:int *p

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档