C++中指针入门
的是,如果你定义了一个指向整型数的指针:int*pNumberSet ,你可以把它当作是数组,如:pNumberSet[0] 和 *pNumberSet是相等的,pNumberSet[1]与*(pNumberSet + 1)也是相等的。
在这一节的最后提一个警告:如果你用 new 动态地分配了一个数组, int *pArray; pArray = new int[6]; 别忘了回收, delete[] pArray; 这一句是告诉编译器是删除整个数组而不一个单独的元素。千万记住了。 后话 还有一点要小心,别删除一个根本就没分配内存的指针,典型的是如果没用new分配,就别用delete:
常见问题解答 Q:为什么我在编译程序时老是在 new 和 delete语句中出现''symbolundefined'' 错误? A:new 和 delete都是C++在C上的扩展,这个错误是说编译器认为你现在的程序是C而不C++,当然会出错了。看看你的文件名是不是.cpp结尾。 Q:new 和 malloc有什么不同? A:new 是C++中的关健字,用来分配内存的一个标准函数。如果没有必要,请不要在C++中使用malloc。因为malloc是C中的语法,它不是为面向对象的C++而设计的。 Q:我可以同时使用free 和 delete吗? A:你应该注意的是,它们各自所匹配的操作不同。free只用在用malloc分配的内存操作中,而delete只用在用new分配的内存操作中。引用(写给某些有能力的读者) 这一节的内容不是我的这篇文章的中心,只是供某些有能力的读者参考。有些读者经常问我关于引用和指针的问题,这里我简要地讨论一下。在前面指针的学习中,我们知道(&)是读作“什么的地址”,但在下面的程序中,它是读作“什么的引用”
引用有点像是一个指向myOtherNumber的指针,不同的是它是自动删除的。所以他比指针在某些场合更有用。与上面等价的代码是:
指针与引用另一个不同是你不能修改你已经定义好的引用,也就是说你不能改变它在声明时所指的内容。举个例子:
myReference = mySecondNumber;//这一步能使myReference 改变吗? cout<<myFristNumber<<endl;//结果是20还是25? 当在类中操作时,引用的值必须在构造函数中设定,例:
总结 这篇文章开始可能会较难掌握,所以最好是多读几遍。有些读者暂时还不能理解,在这儿我再做一个简要的总结: 指针是一个指向内存区域的变量,定义时在变量名前加上星号(*)(如:int *number)。 你可以得到任何一个变量的地址,只在变量名前加上&(如:pNumber =&my_number)。 你可以用''new'' 关键字动态分配内存。指针的类型必须与它所指的变量类型一样(如:int *number 就不能指向 MyClass)。 你可以传递一个指针到函数。必须用''delete''删除你动态分配的内存。 你可以用&array[0]而让指针指向一个数组。 你必须用delete[]而不是delete来删除动态分配的数组。 文章到这儿就差不多结束了,但这些并不就是指针所有的东西,像指向指针的指针等我还没有介绍,因为这些东西对于一个初学指针的人来说还太复杂了,我不能让读者一开始就被太复杂的东西而吓走了。好了,到这儿吧,试着运行我上面写的小程序,也多自己写写程序,你肯定会进步不小的! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |