C语言中的几个容易混淆问题.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  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语言中,最难的就是定义变量,给变量赋值。其实所有的C程序拉出来看到的都是在定义变量,给变量赋值,中间的程序通过运算得到的结果,也可以算是给变量赋值。? ?? ?? ?? ?? ?? ?? ?? ?(一)先说定义变量:? ?? ?? ?? ?? ?? ?? ?? ???因为变量名都是自己定义的标示符,然后最重要的就是变量的类型了。虽然大多C语言书上都列举出了众多的数据类型,但是个人理解,那些都是最基本的一些东西,其实还有很多中类型我们经常遇到,却不知道这些还是数据的类型。? ?? ?? ?? ?? ?? ?? ?? ?一,指针类型;? ?? ?? ?? ?? ?? ?? ?? ???int *? ???,short *??,char *,? ???int **,char**,? ?long int ****************;? ?? ?? ?? ?? ?? ?? ?? ?这些都是指针类型,很显然,可以看出指针类型就是在基本数据类型前面加个*??,??例如定义一个指针变量,? ?? ?? ?? ?? ?? ?? ???int *? ?? ? p;? ?? ?? ?? ? 这个变量p,就有两种含义,第一是,这是一个指针变量,第二是他指向int类型。? ?? ? 我们都知道对于32位pc机,??指针变量都是四个字节。? ?? ???int **? ? p;对于变量p,??也有两个含义,第一这是一个指针变量,第二,它指向一个int*类型.? ?? ?? ?? ?? ?? ?? ?? ?? ?二,数组类型。? ?? ?? ?? ?? ?? ?? ?? ? 这里估计,有人就质疑了,C语言里面还有数组类型吗???有。并且我们一直在写,一直在用,我们一直不知道,是因为C语言的书写方式导致我们不知道有这种类型。??对于一个一维数组,? ? int? ?a[10];? ? C语言的书是这样解释这个东西的,这是个一维数组,也就是一次性定义了十个变量。??在内存中呈线性排列。。。。。。其实我个人理解这个东西应该这样定义,这是一(个包含10个int??元素的类型的)??变量。我们在描述一个变量的时候,总说,这是一个XXX类型的变量,所以在这里对于int? ?a[10];应该这样描述,这是一个有10个int元素的类型的??变量a;??所以写成??这样? ?int [10]? ?? ?? ?a;? ?? ?? ?这是一个变量但是它包含十个元素,这是不是跟我们学过的一个东西特别像?? ? 结构体,结构体不就是包含里XXX 元素的类型,然后用这种类型定义了一个变量,叫做结构体变量。??C语言给结构体类型起名字了,却没给数组类型起名字,所以我们不知道。但是定义数组的时候写成?int [10]? ?? ?a; 这样很多编译器都编译不通过,或者说没有编译器认识它,之所以这样写,只是要明白,数组的原理,因为后面对于能正确理解数组指针,至关重要。。。。? ?? ?? ?? ?? ?? ?? ???三,指针数组;? ?? ?? ?? ?? ?? ?? ? 指针数组很简单,就是int *? ? a[10];? ?? ?类型换了一下而已,按照上面的解释更直观一点写成int *[10]? ?? ?? ?a;??这样,就可以解释为,定义了(一个包含10个指针类型元素的)这种类型的变量? ???a;? ?? ?? ?? ?? ?? ?? ? 四,数组指针,? ?? ?? ?? ?? ?? ?? ?若看完了上面对于数组类型的解释以后,对于数组指针是不是已经很简单了。定义一个指针数组类型的变量? ?是?? ?int *??a[10];前面说了,更直观的写成:? ?? ? int*[10]? ?? ???a;? ???那么定义一个指针变量,就是在原有类型前面加一个*,??也就是int* [10] *? ?? ?p;? ? 但是C语言里面不能这样写,规定要把[10]? ?写到后面,所以就成了int *??*??p[10];? ?但是现在这样就有个问题了,之前有个[10]在中间隔开,倒是可以区别,(int *[10])*? ???p;??现在[10]??写到了后面,无法区别这两个*,到底属于那边的,加空格没作用,所以只能加最有权威的分隔符()??那么就成了 int *??(*p)[10];??这里定义了一个指向(有10个int*类型元素的数组)的类型的变量??p;? ?? ?? ???不好意思,这里有些太绕口,不好理解,确实不好理解,之所以不好理解,是因为我们书写习惯了,看习惯了目前C的这种书写形式,对一些东西根深蒂固。就像很多新人最开始学习指针的时候都是这样定义的,int? ???*p;??这样写虽能编译通过,但是他已经把指针理解

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档