指针的主意事项:
指针的声明:
- 数组指针的声明:一维数组当函数形参的声明有两种:
1 void view(int *a); 2 void view(int a[]);//两者等价
二维数组当函数形参的声明有三种:
void view(int (*a)[5]); //这里不是*a[5],因为要声明5个指针而不是一个指向4个int的指针 void view(int a[][5]); //二维数组声明时一定要把二维数组的列数表明,其行数可以变化
//int **a不是定义的二维数组,而是指向指针的指针
2.指针的初始化:一般情况下将数组的数组名,将变量的地址赋给指针就可以,这样得到的数组将是一个静态的数组,其数组的大小在定义时就确定了,而且是定义在栈的内存区域。我们可以通过另一种new的方法,主动的在堆中申请内存地址,并把地址返回给指针,其操作如下:
1 //用new来申请变量地址 2 int*p=new int; 3 ... 4 delete p; 5 //用new来申请数组地址 6 int *ps=new int [10]; 7 ... 8 delete [] ps;//记得一定要加上[] 9 //二维数组也可以 10 int(*b)[2]=new int[10][2];
//new还可以用于结构体,类等其他的数据类型