一、数组 1.数组的长度是固定的,而指针可以像迭代器来遍历数组; 2.数组不仅可以用来保存基本类型,还可以用来保存 类类型 : 1 class Per{ 2 **** 3 }; 4 5 const int size = 2 ; 6 Per pers[siz
一、数组
1.数组的长度是固定的,而指针可以像迭代器来遍历数组;
2.数组不仅可以用来保存基本类型,还可以用来保存类类型:
1 class Per{ 2 **** 3 }; 4 5 const int size =2; 6 Per pers[size]; 7 Per p1; 8 Per p2; 9 pers[0]=p1; 10 pers[1]=p2;//那么就可以通过数组来获取类对象的不同内容
3.如果元素为类类型,调用默认构造函数进行初始化,如果没有默认构造函数,应显式调用其他构造函数。
4.数组不能直接复制或赋值。
二、指针
1.指向另外一种变量地址的变量,使用指针可以间接操作指向的变量对象;
2.通过指针来操作数组:
1 int arr[3]={1,2,3}; 2 int *ap=arr;//把首地址赋给ap 3 int *ap1=ap+1;//指针加1相当于把指针向后移1位,加n移n位
3.指向空:int *p=0;或者int *p=NULL;
4.void *指针,可以保存任何类型对象的地址,一般用于函数的返回值或者是形参。
5.指针和应用的区别:引用总是指向某个对象,而且定义引用时必须初始化,而指针可以不用初始化;给引用赋值修改的是该引用所关联的对象的值。
6.指针和const:
(1)指向const对象的指针,如:
1 const float pi=3.14; 2 const float *ppi; 3 *ppi=π 4 *ppi=3.15;//这句错误,不能通过*ppi来修改const对象pi的值
(2)const指针,指针本身不能被修改,如:
1 int i=100,j=200; 2 int *const pi=&i;//指针pi不能被修改
(3)指向const对象的const指针
1 const double pi=3.14; 2 const double *const pi_p=π//这里二者都不能被修改