希望生活中有些事情就像while循环一样,愿它的循环条件是1,然而现实却不是这样,往往只能随缘。
今天主要学习了指针。在c++中访问内存空间的方式有两种一个是通过变量名访问,称为直接访问,另一个是通过地址访问,称为间接访问。&i;取地址。
指针就相当于另一个变量的地址,可以用它去间接访问变量。指针声明 int i;int *i_pointer=&i; 使用 i=3;*i_pointer=3;。
指针变量的赋值运算:int *p;//声明int类型的指针p。 p=&i;取i的地址给p。 指针名=地址,1,地址内存放的数据类型和指针的类型相同。2,向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。3,允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。
folat f=3.4;int i=(int)f; 结果表明i=3.4其中()是强制转换int类型。
指针的加减:p+n☞后面第n个数据的地址。
指向数组元素的指针:声明int a[10], *pa; pa=&a[0]; 或 pa=a; a[i] pa[i] *(pa+i), *(a+i)是等效的。
指向类类型对象的指针:声明形式:类名 *对象指针名;例Point A(5,10); Piont *p; p=&A;
通过指针访问对象成员:对象指针名->成员名如:p->getX(); p->getY();
动态内存分配:new 类型 (初始化值) ;例如;int *p;p=new int[10]; //分配一个含有10个整数的整形数组 delete[ ] p; //删除这个数组
用new申请的动态空间使用完毕后,必须有程序员主动进行释放。
指针常量:在指针定义语句的指针名前加const, 表示指针本身是常量。
例int a; int* const p=&a; 定义时必须初始化指针值p不可以修改,指针指向的内容可以修改。即p是常量,不可以作为左值进行运算,*p可以修改
int b[6];p=b; // 错误 *p=6; // 正确 *(p+6)=6; // 正确 *p++=7; // 错误
常量指针:在指针的定义类型前加const,表示指向的对象是常量。
例如const int *pi 或 int const *pi; *pi是常量,不能将*pi作为左值。定义指向常量的指针时,定义时不必先初始化。