指针初始化为变量的地址,比如 int *pt = &higgens
这时候变量在程序编译的时分配的有名称的内存,指针只是为可以通过名称直接访问的内存提供一个别名。
其实指针真正的厉害在于,在运行阶段分配未命名的内存以存储,在这种情况下,只能通过指针来访问内存
在c语言中,可以用库函数malloc()来分配内存
在c++中,通过new运算符
访问内存有两种方式:
1. 通过new运算符 : typeName * pointer_name = new typeName
需要指定2个数据类型:需要什么类型的内存以及用来声明合适的指针
如果以及声明了相应类型的指针,则可以直接使用指针,不用再声明一个新的指针
int *pn = new int
new int : 程序员告诉new,需要为int数据类型分配内存,new运算符根据类型来确定需要多少字节的内存,找到一个长度正确的内存块,并返回该内存的地址,并返回该内存块的地址。然后,将地址赋给pn,pn是被声明为指向int的指针。pn是地址,*pn是存储在那里的值。
2. 变量的地址赋给指针:
int higgens;
int *pt = &higgens;
pn和pt都是将一个int变量的地址复制给了指针
pt也可以通过变量名higgens来访问该int,pn就只能通过该指针进行访问
使用delete释放内存
当需要内存的时候,可以使用new来请求
当使用完了之后,使用delete归还给内存池,归还或释放内存可供程序的其他部分使用
int *ps = new int;
delete ps;
int a =5;
int *p = &a;
delete p; //error