正在加载图片...
靳润昭C语言教程讲义 2001年2月17日 3)两个指针变量之间的运算:只有指向同一数组的两个指针变量之间才能进行运算,否则 运算毫无意义 ①两指针变量相减:两指针变量相减所得之差是两个指针所指数组元素之间相差的元 素个数。实际上是两个指针值(地址)相减之差再除以该数组元素的长度(字节数) 例如pf1和pf2是指向同一浮点数组的两个指针变量,设pf的值为201OH,pf2 的值为2000H,而浮点数组每个元素占4个字节,所以pf1pf2的结果为 (2000H-2010H/4=4,表示pf1和pf2之间相差4个元素。两个指针变量不能进行 加法运算。例如,pfl+pf2是什么意思呢?毫无实际意义。 ②两指针变量进行关系运算:指向同一数组的两指针变量进行关系运算可表示它们所 指数组元素之间的关系 例如 pf1=pf2表示pf1和pf2指向同一数组元素 pf1>pf2表示pf1处于高地址位置 pfl<pf2表示pf2处于低地址位置。 指针变量还可以与0比较。 设p为指针变量,则p=0表明p是空指针,它不指向任何变量: p!=0表示p不是空指针 空指针是由对指针变量赋予0值而得到的。 例如 #define null o int *p=NULL 对指针变量赋0值和不赋值是不同的。指针变量未赋值时,可以是任意值,是 不能使用的。否则将造成意外错误。而指针变量赋0值后,则可以使用,只是它不 指向具体的变量而已 【例10.7】 inta=10,b=20,s,t,*pa,*pb;/*说明pa,pb为整型指针变量*/ /*给指针变量pa赋值,pa指向变量a*/ pb=& /*给指针变量pb赋值,pb指向变量b*/ /求a+b之和,(*pa就是a,*pb就是b)*/ t=x*pa*kpb; /*本行是求a*b之积*/ printf("a=%d\nb=%d \na+b=%d \na*b=%d\n", a, b, atb, a*b) printf("s=%d\nt=%d\n",s, t) 【例10.8】 maino i int a, b, c, *pmax, *pmin: /*pmax,pmin为整型指针变量*/ printf(" input three numbers:n");/*输入提示*/ scanf ("%d%d%d", &a, &b, &c) /*输入三个数字* if(a>b)I /*如果第一个数字大于第二个数字.,* /*指针变量赋值*/ pmin=&b: 1 *指针变量赋值*/ 第12页靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第12页 3) 两个指针变量之间的运算:只有指向同一数组的两个指针变量之间才能进行运算,否则 运算毫无意义。 ① 两指针变量相减:两指针变量相减所得之差是两个指针所指数组元素之间相差的元 素个数。实际上是两个指针值(地址)相减之差再除以该数组元素的长度(字节数)。 例如 pf1 和 pf2 是指向同一浮点数组的两个指针变量,设 pf1 的值为 2010H,pf2 的值为 2000H,而浮点数组每个元素占 4 个字节,所以 pf1-pf2 的结果为 (2000H-2010H)/4=4,表示 pf1 和 pf2 之间相差 4 个元素。两个指针变量不能进行 加法运算。 例如,pf1+pf2 是什么意思呢?毫无实际意义。 ② 两指针变量进行关系运算:指向同一数组的两指针变量进行关系运算可表示它们所 指数组元素之间的关系。 例如: pf1==pf2 表示 pf1 和 pf2 指向同一数组元素; pf1>pf2 表示 pf1 处于高地址位置; pf1<pf2 表示 pf2 处于低地址位置。 指针变量还可以与 0 比较。 设 p 为指针变量,则 p==0 表明 p 是空指针,它不指向任何变量; p!=0 表示 p 不是空指针。 空指针是由对指针变量赋予 0 值而得到的。 例如: #define NULL 0 int *p=NULL; 对指针变量赋 0 值和不赋值是不同的。指针变量未赋值时,可以是任意值,是 不能使用的。否则将造成意外错误。而指针变量赋 0 值后,则可以使用,只是它不 指向具体的变量而已。 【例 10.7】 main(){ int a=10,b=20,s,t,*pa,*pb; /*说明 pa,pb 为整型指针变量*/ pa=&a; /*给指针变量 pa 赋值,pa 指向变量 a*/ pb=&b; /*给指针变量 pb 赋值,pb 指向变量 b*/ s=*pa+*pb; /*求 a+b 之和,(*pa 就是 a,*pb 就是 b)*/ t=*pa**pb; /*本行是求 a*b 之积*/ printf("a=%d\nb=%d\na+b=%d\na*b=%d\n",a,b,a+b,a*b); printf("s=%d\nt=%d\n",s,t); } 【例 10.8】 main(){ int a,b,c,*pmax,*pmin; /*pmax,pmin 为整型指针变量*/ printf("input three numbers:\n"); /*输入提示*/ scanf("%d%d%d",&a,&b,&c); /*输入三个数字*/ if(a>b){ /*如果第一个数字大于第二个数字...*/ pmax=&a; /*指针变量赋值*/ pmin=&b;} /*指针变量赋值*/
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有