c++学习之动态分配内存
对于不确定数量的数据利用动态内存分配是非常好的
对于指针使用new 和delete来实现动态的内存分配 和释放内存
例如需要给整形分配内存和释放
1 int ×p = new int; 2 delete p; 3 4 int *p = new int[10]; 5 delete[] p;
对于指针的递增或递减是对一个指针类型的区域快进行移动而不是相邻的字节(除非长度刚好是1字节)
#include <iostream> using namespace std; int main( int argc ,char **argv) { cout << " Please input a num: "; int num = 0; cin >> num; int *p = new int [num]; for ( int i = 0 ; i < num ; ++i ) { cout << "Enter number " << i <<":"; cin >> *(p + i ); } for(int i = 0 ; i < num ; ++i) { cout << *(p++) << " "; } cout << endl; p -= num; delete[] p; return 0; }
该程序演示啦两种递增指针的方法;1,是通过偏移量变量 2是过通过运算符++它将指针包含的地址递增,让指针指向下一个元素
因为指针是通过new制定分配内存的,所以在delete[]释放内存时,需要将p的改为原始的内存值。这里通过 -=将p重新指向原来的地址。