指针的使用
- 使用new来分配内存
在C语言中我们调用库函数malloc()来动态生成一个新的空间
虽然在C++中也可以这么做,但是我们还有一个更好的方法
new操作符
//一般的操作
int *t = new int;
// 这里会动态分配一个int大小的空间,并使 t 指向它
一般的命名格式为:
typeName pointer_name = new typeName
- 使用delete来释放内存
delete操作符
它使得在使用完内存之后,能够将内存归还给内存池
在C中我们可以使用free()
int *t = new int;
t=100000;
//free(t) C中使用free()函数将其释放
delete t;
注意这里会释放t指向的内存,但不会删除指针t本身
仍然可以让它指向另一个新分配的内存块
!!!特别注意不要重复释放同一个内存块,因为这样你的程序将极其危险!!!
- 使用new来创建动态数组
int *t = new int [100];
delete [] t;
注意:这里这里的delete后面应该先跟方括号再接指针
告诉系统,你要释放的是整个数组,而不仅仅是t所指的数组中的第一个元素所在的内存块
同样我们可以通过下标来引用数组中的每一个元素
int *t = new int[20];
t[0]=0;
t[1]=1;
需要记住的是,将指针变量加1后,其增加的值等于指向的类型占用的字节数
注意:句点操作符和箭头操作符的使用
当结构标识符为结构名时,则使用句点操作符
当结构标识符为指向结构的指针,使用箭头操作符