C++指针学习心得
一:使用delete删除new分配的数组是要注意的事项
1.不要使用delete释放不是new分配的内存
2.不要使用delete释放同一内存块两次(也就是同一指针变量)
3.如果用new[]分配内存分配内存侧用delete[]释放内存
二:指针小结
1.声明指针
要声明特点类型的指针如下面格式
int *pi;
double *pd;
2.给指针赋值
应将内存地址赋予指针,可以对变量名用&操作符,来获取命名的内存地址,new操作符返回
未命名的内存地址。
int pa=3;
pi=π //赋予的地址而不是值
pd=new char;
3.解除指针引用
对指针解除引用意味着获取指针指向的值,对指针应用解除引用或是间接值操作符
(*)来解除引用因此,如果想上面的例子那样pd指向的是double的指针,*pd指向的才是值
4.区分指针和指针所指向的值
如pt是指向int的指针,侧*pt不是指向int的指针,而是完全等同一个int类型的变量。
pt才是指针
5.数组名
C++的数组名指向的是第一个数组元素指向的地址
using namespace std;
/******************************************
*这就是C++指针的运用,对于一个普通变量(number)想获取其地址可以用地址符(&)来获取(&number)
* 若想取其值可以直接运用变量名(number)
*而对于一个声明为指针的变量(u_number)想获取值地址就可以直接运用指针变量名(u_number),如果
* 想获取指针所指向的地址的值侧需要用指针操作符(*)如:(*u_number)
******************************************/
int number=3;
int * u_number;
u_number=&number;
cout<<"number="<<number<<" &number="<<&number<<endl;
cout<<"*u_number="<<*u_number<<" u_number="<<u_number<<endl;
//使用new给指针分配内存
int * pt=new int;
*pt=100;
cout<<"*pt="<<*pt<<" pt="<<pt<<endl;
delete pt; //当使用(new)分配后的指针变量使用后要用(delete pt)来删除其所占的空间
/******************************************
*指针在动态数组的运用
当指针在数组中的运用的时候我们应该把指针当做普通变量来运用当想获取某个变量的值的时候直接使用变量名(p)
当想获取某个变量名的地址是就用(&p),也可以对指针运行(+ - )操作,但是这时候操作的是指针地址而不是值
******************************************/
double *p = new double[3];
p[0]=0.2;
p[1]=0.3;
p[2]=0.4;
cout<<"p[0]="<<p[2]<<"*p[0]="<<&p[0]<<endl;
p=p+1;
cout<<"p[0]="<<p[0]<<endl;
delete[] p;