◆6.2指针的运算
6.2 指针的运算
62指针的运算 表6.1指针的运算 运算符 算 赋值运算 =>>=<<= 关系运算。 -+-4 算术运算。 逻辑非 间接引用运算 new+ 动态创建指针φ deleteφ 册除动态创建的指针 4 取结构或对象的成员
6.2 指针的运算 表6.1 指针的运算
621指针的赋值运算 ◆指针的赋值运算一定是地址的赋值。用来对指针变量 赋值的可以是: 同类型变量的地址; 同类型的已经初始化的指针变量; 其他同类型的指针。 ◆此外,也可以用0或者NULL对指针变量赋值。使得变量 包含的是“空指针”,即不指向任何的内存物理地址。 ◆必须注意:不同类型的指针是不可以互相赋值的。在 指针赋值时,不存在类型自动转换的机制 2005-4-27 北京邮电大学电信工程学院计算机技术中心
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -13- 6.2.1 指针的赋值运算 指针的赋值运算一定是地址的赋值。用来对指针变量 赋值的可以是: 同类型变量的地址; 同类型的已经初始化的指针变量; 其他同类型的指针。 此外,也可以用0或者NULL对指针变量赋值。使得变量 包含的是“空指针”,即不指向任何的内存物理地址。 必须注意:不同类型的指针是不可以互相赋值的。在 指针赋值时,不存在类型自动转换的机制
◆例6.1观察以下指针赋值运算的结果。如果将注释去 掉,结果将如何? #include <iostream> value of pval is0×00000 using names pace std 0x0012FF7C0×0012FF7C void main o 0x0012FF740x0012FF74 注释去掉会出现编译错误 lint val=100, *pval f1 oat vf1=′A’,*pVf1,*pvf2 int *pva2=NULL cout<<value of pval is <<pva2<<end 1 pval=&val; pvf=pvf 2=&vf1 cout<<pval<< <<&va1<<end1 cout<<pvf<<<<pvf2<<end1 //pvf=pva1 2005-427 北京邮电大学电信工程学院计算机技术中心 14
2005-4-27 北京邮电大学电信工程学院计算机技术中心 -14- 例6.1 观察以下指针赋值运算的结果。如果将注释去 掉,结果将如何? #include <iostream> using namespace std; void main() {int va1=100,*pva1; float vf1='A',*pvf1,*pvf2; int *pva2=NULL; cout<<"value of pva1 is "<<pva2<<endl; pva1=&va1; pvf1=pvf2=&vf1; cout<<pva1<<" "<<&va1<<endl; cout<<pvf1<<" "<<pvf2<<endl; //pvf1=pva1; } value of pva1 is 0x00000000 0x0012FF7C 0x0012FF7C 0x0012FF74 0x0012FF74 注释去掉会出现编译错误