C++中的指针是非常好用的,但由于各种指针类型的繁多,很容易遗忘。
1)一级指针
例如
char str[10];
char str[10] = {0};//初始化
此时str为一指向10个char类型数据的内存的首地址;
有时需要动态分配内存,则可以按照如下进行操作
char *str;//此时str为一个字符指针变量,但未指向任何地址,浮空
int N = 10;
str = new char [10];
运用new关键字,便可以动态申请了。
2)二级指针
例如
char image[100][100];
char image[100][100] = {{0}};
此时image为指向100*100的二维char型数组
但如果需要动态分配内存空间呢?此时,则可以
char **image;
image = new char *[100];//image指向一个一维指针数组的首地址
for(int i = 0; i<100; i++)
image[i] = new char [100];//为每一个一级指针image[i]分配长度为100的char型数组
当有一个维度确定数目时
char (*image)[100];//此时可以看成n*100的二维数组
image = new int [n][100];
3)内存的释放
若为指针指向一个变量,则需用delete
例如
int *p;
int N = 100;
p = &N;
delete p;
或者
int *p;
p = new int (100);//此时p指向初始值为100的整形变量
delete p;
若指针p指向一维或多位数组,则需用delete[] p;
驴儿先生笔记,不断更新中zzz...
网友评论