C++ primer plus (chapter4-2)
指针
指针的声明:
1 int *pt1; 2 int* pt2;
int * pt3 3 int*pt4; //虽然可以但是不建议 4 int* pt5,value; //pt3是一个指针,而value是一个变量;
指针的危险:在c++中创建指针时,计算机将分配用来储存地址的内存,但是不会分配用来储存指针指向的数据内存
int* fellow; *fellow=39; //pleace a value in never-never land
没有将地址赋给fellow,故它可能是任何值,不管它是多少,程序都将它解释为39的内存。一定要在对指针应用解除引用符*之前,将指针初始化为一个确定的,适当的地址。
1 int value=5; 2 int* pt=&value;
指针和数字:虽然计算机通常将地址当作整数来处理,但是指针和整型是不同类型的,要将数字当作地址来用,应该使用强制类型转换将数字转换为适当的地址类型
1 int * pt1=0xB8000000; 2 int * pt2=(int *)0xB8000000;
使用new来分配内存:指针真正的用处就是在运行阶段分配未命名的内存来储存值。
tyoename * pointer_name = new typename;
使用delete来释放内存:使用delete是后边要加上指向由new分配的内存块的指针。
int* ps=new int; delete ps; //释放了ps所指向的内存,但是ps不会被删除,可以将它重新指向一个新分配的农内存块
记住一定要配对使用new和delete,否则会发生memory leak。不能用delete来释放声明变量所获的的内存。不要对已经释放的内存块使用delete,因为这样做的结果是不确定的,因此一般不要创建两个指向同一个内存块的指针,因为容易增加错误的删除一个内存块两次。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。