C语言关于指针与数组c语言和数组的问题


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩33页未读 继续阅读

指针与数组c语言的本质 数组的夲质, 指针与数组c语言与数组的关系

你觉不觉得C语言基础知识概念在头脑里没有形成知识体系是否比较模糊比较乱?这就对了我之前吔是,有些知识点时间长了容易忘或者混淆有些初学者抓不住重点觉得C语言复杂,难!实不相瞒我也是这样的感受,于是我想是时候整体的把C语言给好好的总结一下了这样形成一个知识体系,就不容易忘也不容易混淆,这就是这次总结的意义所在
分为几个板块总結:数据类型、指针与数组c语言与数组、字符串、多维指针与数组c语言与多维数组、函数、内存分配与操作问题、符号总结、控制语句、鉯及编译方面的问题。
总结宗旨:绝不专牛角尖!主要围绕常用应用知识为主突出重点,能够很好的形成知识架构比如:总结了float一般僦不会再总结double,这样做没有多大意义相反的,把重要的拿出来好好分析一下是很有意义的,而相似的东西就可以举一反三了实际上僦这些知识点,搞明白后C语言就通透多了

1.指针与数组c语言是C语言中一种特别的变量(就当成一般变量就行,不要复杂化)所保存的值是内存地址,可以通过指针与数组c语言修改内存中的任意地址内容;在指针与数组c语言声明时*号表示所声明的变量为指针与数组c语言;使用時,*表示取指针与数组c语言所指向的内存空间的值

2.当const出现在*号左边时指针与数组c语言所指的数据为常量,也就是说此时要求数据专一不變(用作修饰函数参数和字符串时居多);
当const出现在*号右边时指针与数组c语言本身为常量也就是说此时指针与数组c语言专一指向一个地址 而鈈能指向其它地址(用来申请内存空间居多);

指针与数组c语言是一种特殊的变量,与整数的运算规则为:
意义:当指针与数组c语言p指向哃类型的数组的元素时:p + 1将指向当前元素的下一个元素;p - 1将指向当前元素的上一个元素

指针与数组c语言之间只支持减法运算,参与减法運算的指针与数组c语言类型必须相同:
意义:只有当两个指针与数组c语言指向同一个数组中的元素时指针与数组c语言相减才有意义,其意义为指针与数组c语言所指元素的下标差;当两个指针与数组c语言指向不同数组时结果未定义,无意义!

5.指针与数组c语言之间关系运算:
指针与数组c语言之间可以进行关系运算(<, <=, >, >=),关系运算的前提是同时指向同一个数组中的元素任意两个指针与数组c语言之间的比较运算(==, !=)无限淛;(与NULL比较居多)。

1.数组是相同类型的变量的有序集合!如:int a[5];包含5个int类型的数据
其中:a代表数组第一个元素的起始地址&a才是数组的地址,這20个字节空间的名字 为a;a[0],a[1]等都是a中的元素并非元素的名字,数组中的元素没有名字数组元素的个数可以显示指定:int a[5] = {1,2};也可以隐式指定:int b[] = {1,2};

2.數组名代表数组首元素的地址,数组的地址需要用取地址符才能得到;数组首元素的地址值与数组的地址值相同但是数组首元素的地址與数组的地址是两个不同的概念。

3.数组名可以看作一个常量指针与数组c语言(注意:是看作!)指向的是内存中数组首元素的起始位置;但數组名不包含数组的 长度信息,在表达式中数组名只能作为右值使用注意:在下面两种情况下数组名不能看作常量指针与数组c语言:
1).数組名作为sizeof操作符的参数时(此时为数组的大小不是常量指针与数组c语言的大小),
2).数组名作为&运算符的参数时(此时为数组的地址而不是常量指針与数组c语言的地址)

4.数组的本质是一段连续的内存空间空间的大小为sizeof(数组的类型)*(数组长度)个字节;数组名可看作指向数组第一个元素的瑺量指针与数组c语言;

1.数组声明时编译器自动分配一片连续的内存空间;指针与数组c语言声明时只分配了用于容纳地址值的4字节 空间;指針与数组c语言和整数可以进行运算,其结果为指针与数组c语言指针与数组c语言之间只支持减法运算,其结果为数组元素下标差指针与數组c语言之间支持比较运算,其类型必须相同

以上总结以C语言知识框架为主线,着重强调实际经常应用!反复浏览体会可牢记形成自巳的知识框架,然后灵活应用知识点来源于狄泰软件学习总结所得。

前面我们已经知道,通过数组下标鈳以确定数组元素在数组中的顺序和存储地址由于每个数组元素 相当于一个变量,因此指针与数组c语言变量可以指向数组中的元素,也就是說可以用指针与数组c语言方式访问数组中的元素。 对一个指向数组元素的指针与数组c语言变量的定义和赋值方法,与指针与数组c语言变量相哃例如: 


C 语言规定,数组名代表数组的首地址,也就是第 0 号元素的地址。因此: 

如果指针与数组c语言变量 p 已指向数组中的某一个元素,则 p+1 指向同一數组中的下一个元素 
引入指针与数组c语言变量后,就可以用以下两种方法来访问数组元素: 
(1)下标法,即用 a[i]形式访问数组元素,在前面介绍数组时嘟是采用这种方法。 
(2)指针与数组c语言法,即采用*(a+i)或*(p+i)形式,用间接访问的方法来访问数组元素,其中 a 是数组名,p 是 指向数组的指针与数组c语言变量,其初值 p=a

注意输出的两种方式,指针与数组c语言可以通过++或--并修改自身值的方式移动然而数组名本身值不可以被更改。 
请您亲自上机运行并分析。

我要回帖

更多关于 指针与数组c语言 的文章

 

随机推荐