- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组及指针
制作人:熊石弟
2012年3月26日;内 容 概 要;指针; 内存中的每一个位置由一个独一无二的地 址标识符
内存中的每一个位置包含一个值
;
地址标识符1000的位置存储了10,地址标识符1004的位置存储了-23等
通过地址访问值很不方便,但是编译器可以让我们通过变量记住地址名来访问内容
地址名为变量a,存储了10
;
常用的类型有:char *、int*、float*等
主要是我们把变量声明为什么类型,指向变量的指针就是什么指针类型;
指针声明之后注意对他进行初始化,即指明指针指向的内存位置,否则他会随机指向任意位置,造成程序中断或产生其他结果。
在编程过程中先声明但未初始化指针并没有错,只是建议而已; 空指针并未指向任何东西,要是指针变量为空,只需将指针赋值为零。
NULL是C指针类型的一个特殊值,称为空,表示指针变量的值为空,不指向任何变量或函数。
我们在释放指针指向的内容之后,记得将指针置零,否则就会造成指针悬挂。
对NULL指针进行解引用之前必须确保他不是NULL指针;1.4 指针常量;1.5 指针运算;1.5.2 关系运算
对指针执行关系运算也是有限制的,用下列关系操作符对指针值进行比较是可以的。
= =
注意:他们的前提也两个指针必须同时指向同一个数组中的元素;指针的指针就是双重间接访问
指针的相关操作是间接访问
;1.7 指针和const; const修饰 p 可以是变量也可是常量
int const p=a;//ok
常引用可以是变量也可是常量
int const p=b;//ok
常指针 修饰 *p 可以是变量也可是常量
int const *p =a;//ok
int const *p=b;//ok; int const * const 相当于是in const 修饰 (*const), 那么可以是常量也可以是变量
int const *const p=a;//ok
int const *const p=b;//ok
但是修饰对象只能是变量
int *p=a;// ok
int p=a;//ok
int *p=b;//error
int p=b;//error;
2.1 一维数组
2.2 多维数组
2.3 指针数组 ; 2.1.1 数组名
2.1.2 下标引用
2.1.3 指针与下标
2.1.4 数组参数
2.1.5 数组长度
2.1.6 字符数组;2.1.1数组名;2.1.2 下标引用;举例说明:
*arry=arry[0]
*(arry+2)等价arry[2]
*arry+6等价arry[2]+6
*(arry+6)等价arry[8]
ap[-1],偏移量,等价arry[1]
2[arry],这是合法的
;
举例推断:2[arry]等价于arry[2]
2[arry]等价于*(2+(arry))
*(2+(arry))等价于*(2+arry) 结合律
*(2+arry)等价于 *(arry+2) 交换律
*(arry+2)等价于arry[2];2.1.3 指针与下标;2.1.4数组参数;数组初始化方法
数组的初始化和其他的变量初始化相似,唯一的区别是数组的初始化需要一系列的数值:这些数值在一对花括弧内,数值之间用逗号隔开
示例:
int arry[5]={1,2,3,4,5};
Char arry[]=“abcd”;
Char arry[]={‘a’,’b’,’c’,’d’};;数组存储类型:
数组的初始化也要按存储类型分:静态和自动数组变量
静态数组:在程序执行之前就已经初始化了一次,可以缺省,系统会自动置零;
自动数组:在缺省的情况下是未初始化的,因其存储于堆栈中,每次的位置都不一样;数组参数:
int arry[5]={1,2,3,4,5}; 数组
intstrlen(int string[]) 实现函数
intstrlen( arry) 传参函数
传递给函数的数组名,实质上传给函数的是指向数组第一个元素的指针的一份拷贝,所以我们不必担心会修改作为实参的指针;参数传递分为两种:值传递和地址传递
int arry[5]={1,2,3,4,5}; 数组
int a =5;
值传递:
文档评论(0)