- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言中指针的用法
指 针 5.3 指针的运算 (3)指针相减运算 假设指针px和py是指向同一组数据类型相同的数据,则px-py的运算结果是两个指针间数据的个数。所以px和py之差并不是px和py两指针内所包含地址量之差,而是由如下公式计算决定: px-py=((px)-(py))/sizeof(指针的目标变量的数据类型) 5.3 指针的运算 5.3.2 指针的关系运算 两个指向同一组相同类型数据的指针之间可以进行各种关系运算。两个指针之间的关系运算表示它们的目标变量的地址位置之间的关系。 指针的关系运算应注意以下几点: ?两个不同数据类型的指针之间的关系运算是无意义的。 ?指针与一般整数之间的关系运算也是无意义的。 ?指针可以和0进行“= =”或“!=”比较,用以判断其是否为空指针。 5.3 指针的运算 5.3 指针的运算 5.3.3 指针的赋值运算 对指针可以进行赋值运算,所赋的值一定是地址量,一般不能是数据。 赋值形式有以下几种: ?可以把一个变量的地址赋给与其具有相同数据类型的指针。 例: int x,*px; px=x; ?具有相同数据类型的两个指针可以相互赋值。 例: float *px,*py,y; px=y; py=px; ?可以把一个数组的地址赋给与其具有相同数据类型的指针。 例: double a[30],*pa,*pb; pa=a; pb=a[0]; 5.3 指针的运算 ?其他常用的赋值运算 设px和py是具有相同数据类型的两个指针,则以下赋值是合法的。 px=py+n; px=py-n; px+=n; px-=n; n是地址量。 对指针的目标变量的赋值 对指针的目标变量所赋的值一定是数据。要注意数据类型的统一。 例:int x,*p,y; p=x; *p=10; 等效于x=10 y=*p-5; 最后y=5 5.4 指针与数组 5.4.1 指向数组的指针 5.4.2 指向数组的指针的应用 5.4 指针与数组 5.4.1 指向数组的指针 数组名就是数组元素的首地址,数组元素是连续存放在一片内存空间中, C语言可以用指针访问数组的元素。用指针访问数组的元素的作法是,根据前面所述的数组、指针的概念,首先定义一个数组和指针并使指针指向该数组,例如: float x[10],*px; px=x; px=x[0]; 访问数组的元素还有其它特殊的方法。介绍如下: 设(定义一个一维数组a和指针pa ): int a[10],*pa; 使指针pa指向数组a pa = a; ?下标法(用下标符): 引用数组某元素的方法是: a[i]。 例如:a[0],a[1]…a[9]。 ?地址法: 引用数组某元素的方法是: *(a+i)。例如: *(a+0), *(a+1), …*(a+9)。 ?指针法(用指针运算符): 引用数组某元素的另一种方法是:*(pa+i)。例: *(pa+0), *(pa+1), ..*(pa+9). 用指针加下标的方法引用数组某元素:pa[i]。例如:pa[0], pa[1], …pa[9]。 5.4 指针与数组 说明: 1、虽然上述的三种方法都能输出同样的结果,但它们的效率是不同的。 用下标法访问数组时,是转换成地址法处理的,即先计算出数组元素的地址,然后再找到它指向的存储单元,读出或写入它的值。而用指针变量指向数组元素时则不必每次计算数组元素地址。 2、使用指针访问数组元素时,完全根据地址来访问,而不作“下标是否越界”的检查。 3、使用指向数组元素的指针变量时,应当注意指针变量的当前值。例如: int a[5]; p = a; for(i=0; i5; i++) scanf(“%d”, p++); 5.4 指针与数组 5.4 指针与数组 指针和数组在使用时应注意以下几点: ?用指针名和数组名在访问地址中的数据时,它们的表达形式是等价的,因为指针名和数组名都是地址量。 例如: int x[10],*px=x,i; 引用数组x[10]中的某个元素,可以这样作: x[i]、px[i] 、*(x+i) 、*(px+i)它们的作用是等效的。 ?指针名和数组名在本质上是不同的。 指针是地址变量,其值可以发生变化,可以对其进行赋值和其它的运算。指针的以下运算是合法的:
文档评论(0)