1指针摘要指针(pointer )是另一种类型的“点(点)”,提供对其他对象的间接访问。 定义指针类型的方法以*d的形式编写声明符。 其中d是变量名称,它声明整形指针,如下代码所示。
int *ip1;
要为2指针赋值指针赋值,只能使用四种类型的值: (1)空指针;2 )类型匹配的对象的地址;3 )相同类型的另一个有效指针;4 )另一个对象的以下地址。
2.1空指针“空指针”(null pointer )不指向任何对象。
(1)要指定给空指针,可以使用多种方法将指针指定给空指针。
int *p1=nullptr;
int *p2=0;
int *p3=NULL;
其中,nullptr是C 11新标准刚刚引入的方法。
)2)不能分配给整形变量,但可以分配给整形常量,直接将整形变量分配给指针是错误的操作。 例如
int zero=0;
int *p1=zero;
将zero声明为常数值后,可以为指针赋值。
常数int zero=0;
int *p1=zero;
)3)未定义的指针只是声明了int指针,如果没有定义,例如
int *p4;
此时指针的值是0xCCCCCCCC,如图2-1所示。
图2-1空指针和未定义指针
2.2匹配类型的对象的地址可以将指针指派给具有匹配类型的对象的地址。
int one=1;
int *p5=one;
从图2-2可知,此时p7的值是0x005CFB98,保存在0x005CFB98的存储器中的值是4字节的int类型的数据,该值是1。
图2-2类型匹配的对象的地址
2.3同一类型的另一有效指针可以把指针指派给同一类型的另一有效指针。
int *p6=p5;
此时,由图2-3可知,p6的值与p5的值相同,为0x005CFB98。
图2-3同一类型的另一个有效指针
2.4另一个对象之后的以下地址也可以将指针指定给同一类型对象的下一个地址:
int *p7=p5 1;
从图2-4可以看到,p7的值是0x005CFB9C,即p5的值0x005CFB98加上4字节。
图2-4另一个对象之后的下一个地址