C++中声明指针类型和指针数组
C++和Java最引人瞩目的区别之一就在于C++有指针而Java没有指针.
注意:有人认为Java中的对象引用实际上就是指针,但是由于Java中的对象引用并不直接是一个内存地址,不能对其进行解引用,也不能对其进行指针运算,所以不认为其为指针.
1.C++中声明指针类型:
(1).任意类型的指针的声明.
int * p = NULL;
数据类型 * p 就表示指向此种数据类型变量的指针.
(2),任意类型指针的赋值和初始化.
int i = 100;
int * p1 = NULL;
p1 = &i;
int *p2 = &i;
(3),任意类型的指针的解引用(间接访问):
int j = *p1;
2.C++中特别需要使用指针的3中情况:
(1). 多态:
在C++中,只有当对象是通过指针或者引用进行操纵时才能表现出多态的行为.
(2),相互嵌套类:
class B; //类的前向声明(不完整声明)
class A
{
B b;
}
class B
{
A a;
}
(3) 需要一个"null"对象:
创建一个对象:
Person* ptr = new Person( "John Doe", "Main Street USA" );
"清空"这个对象的操作是:
delete ptr;
ptr = NULL;
但是这样创建的对象 Person peson1( "John Doe", "Main Street USA" ); 由于没有涉及到指针,故不能如上操作来清空.
3.C++中的指针数组:
(1),声明指针数组:
int * int_array[100];
const int MaxClassSize = 100;
string * names [MaxClassSize ];
(2).字符串指针数组的初始化:
方法1:
string * names [MaxClassSize] = {0};
string * names [MaxClassSize] = {0};
方法2:
for (int i=0;i<MaxClassSize;i++)
{
names[i] = NULL;
}
{
names[i] = NULL;
}