指针基础知识(二)

来源:互联网 发布:人的音域 知乎 编辑:程序博客网 时间:2024/04/30 16:30

指针运算是以指针变量所存放的地址量作为运算量进行的运算。

指针运算的实质是地址的运算。

注意:指针运算的种类有限,只能进行算术运算,关系运算和赋值运算。

1.指针的算术运算

(1)这种运算与指针指向数据类型有着密切的关系,例如一个指针px,当执行px++时,如果px指向的数据类型是char型的时候,指针的偏移量为1个字节,当指向的数据类型为int型的时,指针的偏移量为四个字节。

px+n;//表示的实际位置的地址量是(px)+sizeof(px的数据类型)*n;

<strong>/**实现字符串的复制*/#include <iostream.h>void strcpy(char *ps,char *pt){while((*pt=*ps)!='\0'){pt++,ps++;}}void main(){char str1[] ="hello!",str2[10];strcpy(str1,str2);cout<<str2<<endl;}</strong>
(2)两个指针相减,设px和py是具有相同数据类型的两个指针,他们指向同一组数据,px-py运算的结果是两个指针指向的地址位置之间相隔数据个数。因此两个指针相减,不是两个指针持有的地址相减的结果。公式如下:

[(px)-(py)]/数据类型的字节长度

/**统计字符串的长度*/#include <iostream.h>void main(void){char str[20];char *pc;cout<<"enter a string:";cin>>str;pc=&str[0];//等价于pc=strwhile(*pc++!='\0'){}int count=pc-str-1;cout<<count<<endl;}

2.指针的关系运算

两个指针之间的关系运算表示它们指向的地址位置之间的关系。一般来说,指针与一般整数之间的关系运算是没有意义的。但是指针可以和0之间进行等于和不等于的运算:

pa==0或pa!=0

可以用于判断pa是否为一个空指针。

3.指针的赋值运算

当为指针赋值时,右边的表达式必须为地址量。

0 0