指针
始终记住arr[i]等于*(arr + i);
void指针
c允许把一个类型指针赋给void指针,但c++不行
int* p1;
void* p2;
p2 = p1;
双指针char **p; //二级指针,指向一个char *型的变量(即字符指针)。
#include ///动态分配存储空间
using namespace std;
int main()
{
int i,m,n;
cout<<"Input the m & n:";
cin>>m>>n;
//申请 为 a[m][n]
int **a;
a=new int *[m];
for(i=0;i {
a[i]=new int[n];
}
//释放
for(i=0;i {
delete []a[i];
}
delete []a;
return 0;
}
指针数组char (*p)[4]; //和二级指针差不多吧,指向带有四个元素的char 型数组的,不过它与char **的区别在于,它的计算(比如指针自增)时定量的,也就是多了个 数组元素是4的信息。
分配空间和delete
p = new char[5][4];
delete []p;
指针数组char *p[4]; //指针数组,p不是指针, 是个数组名。不过这个数组的元素char*型的,也就是字符指针。
如下
char **p;
char (*q)[4];
char a[4][4];
q = a//正确
p = a//不兼容指针类型转换,警告
如果进行计算,比如输出p[1][0],其实就是*(*(p + 1) + 0),编译器就不知道p + 1实际该加多少,
然而用q的话就知道实际是地址加4个char的大小
#include
#include
#include
#include
#include
#include
#include
阅读(294) | 评论(0) | 转发(0) |